### Preflight Checklist
* [x] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [x] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

### Problem Description
When working with BrowserViews, there's no way to listen to focus changes on either BrowserView itself or its WebContents.

### Proposed Solution
On BrowserWindow, there are `focus` and `blur` events. The same events need to be emitted on BrowserView/WebContents.
i.e. : 
```
browserView.on('focus', () => {
    // view is focused, do stuff
});
```
or  
```
browserView.webContents.on('focus', () => {
    // contents are focused, do stuff
});
```

### Alternatives Considered
I can't think of a good way of working around this lack of functionality
shell/browser/api/electron_api_web_contents.h
const std::string& channel,
      blink::CloneableMessage arguments,
      electron::mojom::ElectronBrowser::MessageSyncCallback callback,
      content::RenderFrameHost* render_frame_host);
  void MessageTo(int32_t web_contents_id,
                 const std::string& channel,
                 blink::CloneableMessage arguments);
  void MessageHost(const std::string& channel,
                   blink::CloneableMessage arguments,
                   content::RenderFrameHost* render_frame_host);
  void UpdateDraggableRegions(std::vector<mojom::DraggableRegionPtr> regions);
  void SetTemporaryZoomLevel(double level);
  void DoGetZoomLevel(
      electron::mojom::ElectronBrowser::DoGetZoomLevelCallback callback);
  void SetImageAnimationPolicy(const std::string& new_policy);
  
  
  void GrantDevicePermission(const url::Origin& origin,
                             const base::Value* device,
                             content::PermissionType permissionType,
                             content::RenderFrameHost* render_frame_host);
  
  
  
  std::vector<base::Value> GetGrantedDevices(
      const url::Origin& origin,
      content::PermissionType permissionType,
      content::RenderFrameHost* render_frame_host);
  
  WebContents(const WebContents&) = delete;