* Output of `node_modules/.bin/electron --version`: v3.0.5
* Operating System (Platform and Version): macOS 10.14

**Expected Behavior**
When webPreferences.sandbox is set to true and webFrame is using a provider for spell checking, the memory must be released after page reload.

**Actual behavior**
The memory isn't released and caused memory leak

**To Reproduce**

- Clone https://github.com/vrbsm/example-memory-leak-electron
- Run npm run start
Memory usage of electron process will be increasing in task manager after reloading the page several times

**Screenshots**
![test-memory-leak-01](https://user-images.githubusercontent.com/9887288/47675838-c2d4b800-db99-11e8-97e8-b5b27bcab929.gif)



atom/renderer/api/atom_api_web_frame.cc
public:
  explicit AtomWebFrameObserver(
      content::RenderFrame* render_frame,
      std::unique_ptr<SpellCheckClient> spell_check_client)
      : content::RenderFrameObserver(render_frame),
        spell_check_client_(std::move(spell_check_client)) {}
  ~AtomWebFrameObserver() final {}
  
  void OnDestruct() final {
    spell_check_client_.reset();
    
    delete this;
  }
 private:
  std::unique_ptr<SpellCheckClient> spell_check_client_;
};
WebFrame::WebFrame(v8::Isolate* isolate)
    : web_frame_(blink::WebLocalFrame::FrameForCurrentContext()) {
  Init(isolate);
}
WebFrame::WebFrame(v8::Isolate* isolate, blink::WebLocalFrame* blink_frame)
    : web_frame_(blink_frame) {
  Init(isolate);
}
WebFrame::~WebFrame() {}
void WebFrame::SetName(const std::string& name) {