* 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
const std::string& language,
                                     v8::Local<v8::Object> provider) {
  auto context = args->isolate()->GetCurrentContext();
  if (!provider->Has(context, mate::StringToV8(args->isolate(), "spellCheck"))
           .ToChecked()) {
    args->ThrowError("\"spellCheck\" has to be defined");
    return;
  }
  auto spell_check_client =
      std::make_unique<SpellCheckClient>(language, args->isolate(), provider);
  
  
  auto* render_frame = content::RenderFrame::FromWebFrame(web_frame_);
  FrameSpellChecker spell_checker(spell_check_client.get(), render_frame);
  content::RenderFrame::ForEach(&spell_checker);
  web_frame_->SetSpellCheckPanelHostClient(spell_check_client.get());
  new AtomWebFrameObserver(render_frame, std::move(spell_check_client));
}
void WebFrame::InsertText(const std::string& text) {