[Extensions SW] Fix Event registration race.

There's no ordering guarantee between SW mojo IPCs and extension IPCs.
This (infrequently) causes browser process to see event listener registration
*after* the browser process decides to dispatch that event.

This CL adds extension IPCs to notify browser process when:
  - A service worker context has finished loading and executing its global JS
    scope's code (this corresponds to EmbeddedWorkerInstance::OnStarted)
  - A service worker context has destroyed.

With these IPCs, browser process can identify which extenison SWs are running
at a given point, and ServiceWorkerTaskQueue can queue up tasks to dispatch
events when a worker hasn't completely started, e.g. when the worker has started
from SW mojo IPC's perspective, but it hasn't yet finished executing its global
JS code from legacy IPC's perspective.

Bug: 879015
Test: EventsToStoppedWorker test doesn't flake locally anymore.
Change-Id: I390e102a55acb97d680265d3362d7e01d72aea1b
Reviewed-on: https://chromium-review.googlesource.com/1203319
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: Makoto Shimazu <shimazu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#591014}
14 files changed