Add response source field in FetchAPIResponse

We've done an early analysis of new histograms for service worker load timing
and realized that we need further breakdown. Specifically we'd like to have
breakdown of loading time by response source (e.g. from network, HttpCache,
CacheStorage). This CL adds the source of a response so that we can record
response load time separately based on their sources. Currently the source is
set in following cases (otherwise the source is unspecified):
- response from fetch(). In this case the source could be either kNetwork or
  kHttpCache.
- response from Cache#match() or Cache#matchAll(). In this case the source is
  kCacheStorage.

This CL doesn't add histograms but follow-up CLs will add them.

This CL based on wanderview@'s CL [1]. For those who are curious about why we
need to touch a number of files, see [2] for how we populate information from
blink to content. You may also wonder why we can't use existing fields in
ResourceResponseInfo like |was_fetched_via_cache|. The answer is that service
worker URLLoaders (SWNavigationLoader and SWSubresourceLoader) create
ResourceResponseInfo from FetchResponseAPI, as [2] implies.

[1] https://crrev.com/c/1194765
[2] https://drive.google.com/file/d/16ITKnTM63_5Y2GTEBzmCJh_7cqm_MQtL/view?usp=sharing

Change-Id: I2f8d1ab80257fb4511424bc9bcb0f24d37a8b46e
Bug: 877972
Reviewed-on: https://chromium-review.googlesource.com/c/1358100
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: Makoto Shimazu <shimazu@chromium.org>
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613512}
16 files changed