[Enrollment v2] Refactor CryptAuth v2 Enrollment schedulers

See design at http://go/cros-devicesync-v2-scheduling

In preparation for DeviceSync v2, we refactor the v2 Enrollment
schedulers. DeviceSync v2 scheduling will be added to these schedulers
in a subsequent CL.

In this CL, we
  * Move ownership of the scheduler from the Enrollment manager to
    DeviceSyncImpl. This way the scheduler can be shared between the
    v2 Enrollment and DeviceSync managers.
  * Move all caching and invocation reason determination out of the
    Enrollment manager and into the scheduler.
  * Create a pending-request caching mechanism in the scheduler. This
    allows us store an Enrollment request that is made before
    scheduling has been started, while an Enrollment attempt is in
    progress, or while we are offline.
  * The latter point enables us to easily merge the "persistent" and
    "network-aware" schedulers into a single implementation.

Note: M76 branch is May 30th, so these changes will make it into the v2
Enrollment rollout.

Bug: 899080
Change-Id: Ia994141f7f245ff316f0df93b2f979c3756d94ee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1606244
Commit-Queue: Josh Nohle <nohle@chromium.org>
Reviewed-by: Kyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661367}
19 files changed