Introduce TabRestoreServiceClient and //chrome implementation.

Core tab restore code from //chrome/browser/sessions is targeted for
componentization in order to cleanly integrate with iOS. To achieve this goal,
the code needs to be cleaned of //content and //chrome dependencies. This CL
introduces the TabRestoreServiceClient interface, which is an abstraction of
Profile for usage within the core tab restore code. It also adds initial usage
of this interface to eliminate knowledge of //chrome-level factories and the
//chrome-level SessionService from PersistentTabRestoreService. Finally, it
moves the //chrome-level static functions for creating a TabRestoreService out
of the classes to be componentized and into TabRestoreServiceFactory.

BUG=528883

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

Cr-Commit-Position: refs/heads/master@{#348099}
20 files changed