* Electron version: 1.7.9
* Operating system: macOS 10.12.6

### Expected behavior

Often Electron apps want to get in front of `openExternal` calls to prevent them, or display a "are you sure you want to open" dialog for possibly unsafe url schemes like `ssh://`. At the moment, you can either blanket deny these or allow all for a give host via a `permissionRequestHandler`. It would be helpful for the permission handler to be given the url that the window is attempting to navigate to better determine the action it should take.


```
 $ git clone git@github.com:gerges/electron-quick-start.git -b  feat/set-permission-handler-openexternal-url
 $ npm install
 $ npm run start
```
atom/browser/atom_permission_manager.cc
#include "atom/browser/atom_permission_manager.h"
#include <vector>
#include "atom/browser/web_contents_preferences.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
namespace atom {
namespace {
bool WebContentsDestroyed(int process_id) {
  auto contents =
      WebContentsPreferences::GetWebContentsFromProcessID(process_id);
  if (!contents)
    return true;
  return contents->IsBeingDestroyed();
}
void PermissionRequestResponseCallbackWrapper(
    const AtomPermissionManager::StatusCallback& callback,
    const std::vector<blink::mojom::PermissionStatus>& vector) {
  callback.Run(vector[0]);
}
}  
class AtomPermissionManager::PendingRequest {