Introduce url_list to the Response scheme of CacheStorage.

According to the spec, the CacheStorage has to store the URL list of responses.
https://github.com/w3c/ServiceWorker/issues/737#issuecomment-175844226
So this cl introduces url_list to the Response scheme of CacheStorage, and pass
it from FetchManager::Loader to CacheStorage and ServiceWorkerURLRequestJob and
ResourceResponse.

To let FetchManager::Loader know the URL list, this cl introduces
ThreadableLoaderClient::didReceiveRedirectTo(). DocumentThreadableLoader calls
didReceiveRedirectTo() when it received a redirect response.
- If fetch() in called on the main thread, FetchManager::Loader's
  didReceiveRedirectTo() is called directly from DocumentThreadableLoader.
- If fetch() is called on the worker thread, FetchManager::Loader's
  didReceiveRedirectTo() is called via WorkerThreadableLoader::
  MainThreadLoaderHolder.
And FetchManager::Loader::didReceiveResponse() sets the URL list to
FetchResponseData.

When FetchEvent.respondWith(response) is called in the SW, the URL list is
passed to ServiceWorkerURLRequestJob via blink::WebServiceWorkerResponse and
content::ServiceWorkerResponse. And when the browser process sends the response
to the controlled page, the URL list is passed via content::ResourceResponseInfo
and blink::WebURLResponse and blink::ResourceResponse.

If Cache.put(request, response) is called, the URL list is passed to
CacheStorageCache::Put() via blink::WebServiceWorkerResponse and
content::ServiceWorkerResponse. And it converts the list to the protobuf and
save to the storage.

When Cache.match(request) returns the response to the renderer process, the URL
list is read from the protobuf in the storage and passed via
content::ServiceWorkerResponse and blink::WebServiceWorkerResponse to the
renderer process.

BUG=658249

Review-Url: https://codereview.chromium.org/2516353002
Cr-Commit-Position: refs/heads/master@{#437241}
40 files changed