[Offline pages] Creating BackgroundJobScheduler, which uses JobScheduler

In order to enable scheduling using JobScheduler, this patch:
* Refactors BackgroundScheduler to expose its functionality through
  instance methods.
* Adds BackgroundScheduler#getInstance method to get appropriate
  implementation of BackgroundScheduler (default uses GCM Network
  Manager)
* Introduces BackgroundJobScheduler, which implements basic
  scheduling using JobScheduler
* Updates TasksExtrasPacker to handle PersistableBundle, which
  is required by JobScheduler (handling BaseBudnle would work if
  min API level was 21).
* Updates/adds tests.

BUG=683802,692151
R=petewil@chromium.org,nyquist@chromium.org

Review-Url: https://codereview.chromium.org/2686203002
Cr-Commit-Position: refs/heads/master@{#451866}
12 files changed