sync: fix session sync bug when restoring tabs

When we restart on Android, tabs may not be fully loaded and may not
have a WebContents.  For reassociation to work, we need to update tab
IDs for these nodes and remember (in SessionsSyncManager) that we've
seen the tab and are just waiting for it to come alive via an
AssociateTab call.  To do this, we record the node in a TabLink
and use restored tab info (passed to MergeDataAndStartSyncing) to construct
a SyncData for the SyncChange.

Testing this requires mocking out SyncedWindowDelegate fetching as well as
faking SyncedTabDelegate.  I've added SyncedWindowDelegateGetter to skirt
the static method issue with GetSyncedWindowDelegates.

Note the bug also exists in v1 / SessionModelAssociator.

BUG=334980,337057

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246707 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 246707