Create ServiceWorkerProviderHost before starting worker

Currently ServiceWorkerProviderHost for a service worker's context is bound with
the corresponing provider on the hosted worker when ProviderCreated and
SetHostedVersion messages are getting back after sending the StartWorker
message. This patch is to removes the round trip.
This patch changes the procedure of creating the SWProviderHost like the following.

1: Create a mock provider host when ServiceWorkerVersion::StartWorker is called.
2: Complete the rest of initialization for the provider host before sending
StartWorker message at ServiceWorkerProviderHost::CompleteStartWorkerPreparation.
3: Send the infomation about the provider host to the renderer as an argument of
EmbeddedWorkerInstanceClient::StartWorker.
4: Create ServiceWorkerNetworkProvider on the renderer when
ServiceWorkerContextClient is constructed.

This patch also sovles a weird ordering issue between ProviderDestroyed and
SetHostedVersion, and between OnStopped and ProviderDestroyed.

BUG=629701,676983,668633
NOPRESUBMIT=true

Review-Url: https://codereview.chromium.org/2779763004
Cr-Commit-Position: refs/heads/master@{#481391}
42 files changed