* Electron version: 1.7.3, 1.6.11
* Operating system: macOS 10.12.5

### Expected & Actual behavior

Creating a menu object then losing the reference to it should not increase memory consumption. In the below example the menu is thrown away at the end of the function, but remains in memory.

```js
const { Menu } = require('electron')
(function () {
  const menu = Menu.buildFromTemplate([{ label: 'Test' }])
})()
```

Arguably you should could call `destroy()` on the menu, but if it has submenus the leak remains as the submenus are not destroyed either.

```js
const { Menu } = require('electron')
(function () {
  const menu = Menu.buildFromTemplate([{
    label: 'Test',
    submenu: [ { label: 'Test2' } ]
  }])
  menu.destroy()
})()
```

### How to reproduce

Probably best to show this with an example :). This repo does nothing more than create lots of menus and log memory usage

```
git clone https://github.com/wavebox/electron-quick-start.git
cd electron-quick-start
git checkout menu-memory-leak
npm install
npm run broken //to see the broken behaviour
npm run fixed //to see the fixed behaviour
```

In the broken example `destroy()` is only called on the topmost created menu. In the fixed example `destroy()` is also called on the submenu

### Fixes

I guess there's arguments for either destroying automatically when references are released, or being required to call destroy to release memory. You could also argue that the `destroy` call should destroy all submenus too, but I can imagine use cases where this might not be desirable. Perhaps having a `destroyAll()` type call would be useful.
atom/browser/api/atom_api_menu.cc
#include "atom/browser/api/atom_api_menu.h"
#include "atom/browser/native_window.h"
#include "atom/common/native_mate_converters/accelerator_converter.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/image_converter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "atom/common/node_includes.h"
namespace atom {
namespace api {
Menu::Menu(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)