### Issue Details

* **Electron Version:**
  * 3.x, 4.x, 5.x, 6.x
* **Operating System:**
  * All
* **Last Known Working Electron version:**:
  * 2.x

### Expected Behavior
When navigations occur, a new process should be created for the navigation.

### Actual Behavior
When a navigation occurs _during_ a preloads scripts execution the same process is re-used as Chromium does not think the navigation has been committed yet.  This causes a memory leak and all native node modules to break.

### To Reproduce
Fiddle: https://gist.github.com/MarshallOfSound/c89aa0037c3da114d44aa3a2d1a0fc24

### Screenshots
![image](https://user-images.githubusercontent.com/6634592/55097842-eb45dd00-5079-11e9-99bf-d49c0d997bca.png)

As you can see here there are three navigation loads, the second and the third one actually have the same process ID (and are running in the same process)
shell/browser/atom_browser_client.cc
command_line->AppendSwitchNative(switches::kAppUserModelId, current_app_id);
    CoTaskMemFree(current_app_id);
  }
#endif
  if (delegate_) {
    auto app_path = static_cast<api::App*>(delegate_)->GetAppPath();
    command_line->AppendSwitchPath(switches::kAppPath, app_path);
  }
  content::WebContents* web_contents = GetWebContentsFromProcessID(process_id);
  if (web_contents) {
    if (web_contents->GetVisibleURL().SchemeIs("devtools")) {
      command_line->AppendSwitch(switches::kDisableRemoteModule);
    }
    auto* web_preferences = WebContentsPreferences::From(web_contents);
    if (web_preferences)
      web_preferences->AppendCommandLineSwitches(
          command_line, IsRendererSubFrame(process_id));
    auto preloads =
        SessionPreferences::GetValidPreloads(web_contents->GetBrowserContext());
    if (!preloads.empty())
      command_line->AppendSwitchNative(
          switches::kPreloadScripts,
          base::JoinString(preloads, kPathDelimiter));
    if (CanUseCustomSiteInstance()) {
      command_line->AppendSwitch(
          switches::kDisableElectronSiteInstanceOverrides);
    }
  }
}
void AtomBrowserClient::AdjustUtilityServiceProcessCommandLine(