[Background Fetch] Move ownership of job controllers to scheduler

Major changes:
- The scheduler owns the job controllers. It is also the data manager
/ service worker observer now instead of BackgroundFetchContext.
- The job controller itself is in charge of processing a fetch. This
simplifies the `abort` workflow thanks to weak_ptrs. The scheduler can
still be extended to process multiple requests though.
- The scheduler cleanup process for a job controller handles the
registration cleanup and event dispatching.
- The UpdateUI DB tasks and checks and associated checks were removed
since the UI can only be updated once when the registration
fails/succeeds.
- Scheduler::Controller was removed since it doesn't make sense to have
anymore now that the scheduler directly owns the controllers (also
RequestProvider because it added no value).
- There were some other minor readability cleanups along the way.

Bug: 850512
Change-Id: Icff68da7ccc20d8112d283843dd2ad6c6d1a9a26
Reviewed-on: https://chromium-review.googlesource.com/c/1297412
Reviewed-by: Jesse Doherty <jwd@chromium.org>
Reviewed-by: Peter Beverloo <peter@chromium.org>
Commit-Queue: Rayan Kanso <rayankans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605475}
28 files changed