Abstract WebContents/NavigationController from core TabRestore code
As the final piece of eliminating //content dependencies from core TabRestore
code to enable clean integration with iOS, this CL eliminates that code's
knowledge of WebContents and NavigationController.
To do so, it introduces an LiveTab interface that is an abstract representation
of an open tab from the tab restore POV. It also introduces a ContentLiveTab
implementation that is backed by WebContents and used by //chrome.
Core TabRestore code is moved from talking to WebContents/NavigationController
to talking to LiveTab. //chrome usage of this core code is changed to convert
back and forth between a (Content)LiveTab and WebContents as necessary, using
the fact that ContentLiveTab is a WebContentsUserData with a web_contents()
accessor.
BUG=530174
Review URL: https://codereview.chromium.org/
1321713005
Cr-Commit-Position: refs/heads/master@{#349454}