* 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
public:
  PendingRequest(content::RenderFrameHost* render_frame_host,
                 const std::vector<content::PermissionType>& permissions,
                 const StatusesCallback& callback)
      : render_process_id_(render_frame_host->GetProcess()->GetID()),
        callback_(callback),
        results_(permissions.size(), blink::mojom::PermissionStatus::DENIED),
        remaining_results_(permissions.size()) {}
  void SetPermissionStatus(int permission_id,
                           blink::mojom::PermissionStatus status) {
    DCHECK(!IsComplete());
    results_[permission_id] = status;
    --remaining_results_;
  }
  int render_process_id() const {
    return render_process_id_;
  }
  bool IsComplete() const {
    return remaining_results_ == 0;
  }
  void RunCallback() const {
    callback_.Run(results_);
  }
 private:
  int render_process_id_;
  const StatusesCallback callback_;
  std::vector<blink::mojom::PermissionStatus> results_;
  size_t remaining_results_;
};
AtomPermissionManager::AtomPermissionManager() {