Don't swap out the old RenderFrameHost until the new one commits.

This is a major cleanup of cross-process navigation that delays running
the old render frame's unload handler until the new render frame has
committed.  As a result, there is no period of time when swapped out 
RenderFrameHosts are visible.

Most cross-process navigations are no longer paused in the network 
stack (unless they require a transfer), and the WasSwappedOut IPC 
message is removed.  The STATE_WAITING_FOR_COMMIT and 
STATE_WAITING_FOR_UNLOAD_ACK states in RenderViewHostImpl 
can also be removed.

Overview doc with navigation timeline diagrams:
https://docs.google.com/document/d/1nLUxn4nV5g0HVGf-n34us5kQ0-erE-7050lzpMSxa4Q/edit?usp=sharing

BUG=402020
TEST=Unload handlers still run on cross-process navigations.

Review URL: https://codereview.chromium.org/464593003

Cr-Commit-Position: refs/heads/master@{#290828}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290828 0039d316-1c4b-4281-b951-d872f2087c98
22 files changed