Precache uses GcmNetworkManager for task scheduling
Precaching now uses GcmNetworkManager to be notified of good
times to precache, but still uses it's own logic to determine
when conditions have turned bad during a precache.
In addition, this change renames PrecacheService as
PrecacheController, and makes it a singleton.
BUG=
542862
Committed:
https://crrev.com/eb63156da4337e66b5c4df3ef54b62ea4d4ad4be
Cr-Commit-Position: refs/heads/master@{#383973}