sync: final pieces to sync deferred initialization

Refactors startup logic and state tracking into a new StartupController.
Adds a fallback timer in the event no data type triggers initialization.

I get the impression the various "IsSync{Enabled[AndLoggedIn],Accessible}"
etc methods could be consolidated somewhat, but I'll leave that to a
future CL.

TBR=kalman@chromium.org, bauerb@chromium.org
BUG=80194

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

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