<!--
Thanks for opening an issue! A few things to keep in mind:

- The issue tracker is only for bugs and feature requests.
- Before reporting a bug, please try reproducing your issue against
  the latest version of Electron.
- If you need general advice, join our Slack: http://atom-slack.herokuapp.com
-->

Tray icon does not process any clicks after first click/double-click until after certain timeout. You can see that system highlight still appears and disappears, but no events are dispatched. This is super annoying because the timeout is around a second or so. Quite frequently I spot that the click on tray icon did nothing however visual feedback was provided.

I think something is up in here: https://github.com/electron/electron/blob/master/atom/browser/ui/tray_icon_cocoa.mm#L219

I don't have popup menu since I have a menubar with improvised popover displayed down under tray icon. I think Tray menu should check if menu controller exists and let clicks go through otherwise. Right now it seems that it attempts to handle standard context menu in the same fashion even if there is none.

* Electron version: 1.6.3
* Operating system: macOS

### Expected behavior

Expected clicks or double-clicks being dispatched repeatedly.

### Actual behavior

No clicks received after first double click.

### How to reproduce

In order to reproduce that create a tray icon and add two handlers to it:

```js
var tray = new Tray(nativeImage.createEmpty());
tray.on('double-click', () => {
  console.log('tray.double-click');
});
tray.on('click', () => {
  console.log('tray.click');
});
```

Now start clicking like crazy non-stop, you can keep clicking forever and will not receive any event after click/double-click are dispatched. You have to wait over 1 second in order to get next click.

Your console log should look like this:

```
tray.click
tray.double-click
```
atom/browser/ui/tray_icon.h
ALWAYS,    
    NEVER,     
    SELECTION  
  };
  virtual void SetHighlightMode(HighlightMode mode);
  
  
  virtual void DisplayBalloon(ImageType icon,
                              const base::string16& title,
                              const base::string16& contents);
  
  virtual void PopUpContextMenu(const gfx::Point& pos,
                                AtomMenuModel* menu_model);
  
  virtual void SetContextMenu(AtomMenuModel* menu_model) = 0;
  
  virtual gfx::Rect GetBounds();
  void AddObserver(TrayIconObserver* obs) { observers_.AddObserver(obs); }
  void RemoveObserver(TrayIconObserver* obs) { observers_.RemoveObserver(obs); }