### 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 an issue that matches the one I want to file, without success.

### Issue Details

* **Electron Version:**
  * 3.1.11, 4.2.4, 5.0.2
* **Operating System:**
  * macOS 10.14.4
* **Last Known Working Electron version:**
  * 2.0.18

### Expected Behavior
Calling `webContents.destroy()` on a `BrowserWindow` instance should not crash Electron.

### Actual Behavior
Calling `webContents.destroy()` on a `BrowserWindow` instance crashes Electron.

### To Reproduce
Append `mainWindow.webContents.destroy()` at the end of the `createWindow` function in Fiddle.

### Additional Information
Seems to be related to https://github.com/electron/electron/commit/a25b49a127d08849835b6781092843f2fc145d87#diff-3d0d8f51a9e7a8d2a462429afa5c5959

```
Thread 0 Crashed:: CrBrowserMain  Dispatch queue: com.apple.main-thread
0   com.github.electron.framework 	0x0000000101e5dc28 base::ObserverList<atom::api::ExtendedWebContentsObserver, false, true>::RemoveObserver(atom::api::ExtendedWebContentsObserver const*) + 648 (algorithm:999)
1   com.github.electron.framework 	0x0000000101e5908f atom::api::WebContents::RemoveObserver(atom::api::ExtendedWebContentsObserver*) + 47 (atom_api_web_contents.h:286)
2   com.github.electron.framework 	0x0000000101e58fbd atom::api::BrowserWindow::~BrowserWindow() + 141 (atom_api_browser_window.cc:101)
3   com.github.electron.framework 	0x0000000101e591d5 atom::api::BrowserWindow::~BrowserWindow() + 21 (atom_api_browser_window.cc:103)
4   com.github.electron.framework 	0x0000000101e59279 atom::api::BrowserWindow::~BrowserWindow() + 25 (atom_api_browser_window.cc:97)
5   com.github.electron.framework 	0x0000000101e7379b mate::TrackableObjectBase::Destroy() + 43 (trackable_object.cc:45)
6   com.github.electron.framework 	0x0000000101e7402f void base::internal::FunctorTraits<void (mate::TrackableObjectBase::*)(), void>::Invoke<base::WeakPtr<mate::TrackableObjectBase> >(void (mate::TrackableObjectBase::*)(), base::WeakPtr<mate::TrackableObjectBase>&&) + 127 (bind_internal.h:447)
7   com.github.electron.framework 	0x0000000101e73f4a void base::internal::InvokeHelper<true, void>::MakeItSo<void (mate::TrackableObjectBase::*)(), base::WeakPtr<mate::TrackableObjectBase> >(void (mate::TrackableObjectBase::*&&)(), base::WeakPtr<mate::TrackableObjectBase>&&) + 90 (bind_internal.h:553)
8   com.github.electron.framework 	0x0000000101e73ee0 void base::internal::Invoker<base::internal::BindState<void (mate::TrackableObjectBase::*)(), base::WeakPtr<mate::TrackableObjectBase> >, void ()>::RunImpl<void (mate::TrackableObjectBase::*)(), std::__1::tuple<base::WeakPtr<mate::TrackableObjectBase> >, 0ul>(void (mate::TrackableObjectBase::*&&)(), std::__1::tuple<base::WeakPtr<mate::TrackableObjectBase> >&&, std::__1::integer_sequence<unsigned long, 0ul>) + 80 (bind_internal.h:604)
9   com.github.electron.framework 	0x0000000101e73e39 base::internal::Invoker<base::internal::BindState<void (mate::TrackableObjectBase::*)(), base::WeakPtr<mate::TrackableObjectBase> >, void ()>::RunOnce(base::internal::BindStateBase*) + 57 (bind_internal.h:572)
10  libbase.dylib                 	0x000000010c5aba2f 0x10c5a9000 + 10799
11  libbase.dylib                 	0x000000010c5dc663 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) + 947
12  libbase.dylib                 	0x000000010c6a577a base::internal::IncomingTaskQueue::RunTask(base::PendingTask*) + 234
13  libbase.dylib                 	0x000000010c6af1dc base::MessageLoop::RunTask(base::PendingTask*) + 908
14  libbase.dylib                 	0x000000010c6af7c9 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) + 89
15  libbase.dylib                 	0x000000010c6afa99 base::MessageLoop::DoWork() + 553
16  libbase.dylib                 	0x000000010ca3d252 base::MessagePumpCFRunLoopBase::RunWork() + 98
17  libbase.dylib                 	0x000000010ca3d1dc 0x10c5a9000 + 4800988
18  libbase.dylib                 	0x000000010ca4d15a base::mac::CallWithEHFrame(void () block_pointer) + 10
19  libbase.dylib                 	0x000000010ca3c0c5 base::MessagePumpCFRunLoopBase::RunWorkSource(void*) + 101
20  com.apple.CoreFoundation      	0x00007fff505025e3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
21  com.apple.CoreFoundation      	0x00007fff50502589 __CFRunLoopDoSource0 + 108
22  com.apple.CoreFoundation      	0x00007fff504e5f93 __CFRunLoopDoSources0 + 283
23  com.apple.CoreFoundation      	0x00007fff504e5505 __CFRunLoopRun + 1189
24  com.apple.CoreFoundation      	0x00007fff504e4e0e CFRunLoopRunSpecific + 455
25  com.apple.HIToolbox           	0x00007fff4f7d19db RunCurrentEventLoopInMode + 292
26  com.apple.HIToolbox           	0x00007fff4f7d161d ReceiveNextEventCommon + 355
27  com.apple.HIToolbox           	0x00007fff4f7d14a6 _BlockUntilNextEventMatchingListInModeWithFilter + 64
28  com.apple.AppKit              	0x00007fff4db6bffb _DPSNextEvent + 965
29  com.apple.AppKit              	0x00007fff4db6ad93 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1361
30  com.apple.AppKit              	0x00007fff4db64eb0 -[NSApplication run] + 699
31  libbase.dylib                 	0x000000010ca3e8b2 0x10c5a9000 + 4806834
32  libbase.dylib                 	0x000000010ca3b765 base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 101
33  libbase.dylib                 	0x000000010c6ae98d base::MessageLoop::Run(bool) + 573
34  libbase.dylib                 	0x000000010c7cf22e base::RunLoop::Run() + 590
35  libcontent.dylib              	0x00000001170fe9e2 content::BrowserMainLoop::MainMessageLoopRun() + 402
36  libcontent.dylib              	0x00000001170fe703 content::BrowserMainLoop::RunMainMessageLoopParts() + 483
37  libcontent.dylib              	0x00000001171a7cda 0x11565c000 + 28622042
38  libcontent.dylib              	0x00000001170f0a7f content::BrowserMain(content::MainFunctionParams const&) + 655
39  libcontent.dylib              	0x0000000119f06a08 0x11565c000 + 76196360
40  libcontent.dylib              	0x0000000119f0822a 0x11565c000 + 76202538
41  libcontent.dylib              	0x0000000119efee75 0x11565c000 + 76164725
42  libembedder.dylib             	0x0000000106a80ae0 service_manager::Main(service_manager::MainParams const&) + 2128
43  libcontent.dylib              	0x0000000119f06769 content::ContentMain(content::ContentMainParams const&) + 89
44  com.github.electron.framework 	0x0000000101cad3de AtomMain + 110 (atom_library_main.mm:26)
45  com.github.electron           	0x0000000100f04f82 main + 34 (atom_main.cc:217)
46  libdyld.dylib                 	0x00007fff7c95e3d5 start + 1
```
atom/browser/api/atom_api_web_contents.cc
return web_contents()->GetURL();
}
base::string16 WebContents::GetTitle() const {
  return web_contents()->GetTitle();
}
bool WebContents::IsLoading() const {
  return web_contents()->IsLoading();
}
bool WebContents::IsLoadingMainFrame() const {
  return web_contents()->IsLoadingToDifferentDocument();
}
bool WebContents::IsWaitingForResponse() const {
  return web_contents()->IsWaitingForResponse();
}
void WebContents::Stop() {
  web_contents()->Stop();
}
void WebContents::GoBack() {
  atom::AtomBrowserClient::SuppressRendererProcessRestartForOnce();
  web_contents()->GetController().GoBack();
}
void WebContents::GoForward() {
  atom::AtomBrowserClient::SuppressRendererProcessRestartForOnce();
  web_contents()->GetController().GoForward();
}
void WebContents::GoToOffset(int offset) {