Plumb resources serviced from memory cache to PLM

Byte metrics in page load metrics should be indicative of all bytes loaded
by the page. UMA shows that large numbers of resources (~45% of JS
resources) come from the memory cache. To provide a better picture of
everything loaded by the page, we should make memory cache resources
visible to observers.

This change plumbs information about resources loaded via the blink
memory cache into PageLoadMetrics. This is done though the existing
SendTiming mojo, and these resources are included in the existing
OnResourceDataUseObserved callback for PageLoadMetrics observers. This
was added to the existing interface so that an observer that wants to
look at all bytes loaded on the page does not need to implement two
separate interfaces.

Because we modify the existing mojo, all existing observers need to be
updated to either discard resources loaded by the memory cache, or need
to have their relevant histograms versioned.

Observers whose metrics are updated:
 - CorePageLoadMetricsObserver
 - TabRestorePageLoadMetricsObserver
 - MediaPageLoadMetricsObserver
 - UkmPageLoadMetricsObserver

Observers whose metrics would be affected but are modified to ignore
MemoryCache resources:
 - ResourceMetricsObserver
 - AdsPageLoadMetricsObserver
 - DataReductionProxyMetricsObserver

Only the histograms versioned in this CL should change. For all histograms
not versioned in this change, this should be a no-op.

Bug: 968141
Change-Id: I67ed0977f8532616815ba0fbe6e1eb3f3b70e36f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1633190
Commit-Queue: John Delaney <johnidel@chromium.org>
Reviewed-by: Bryan McQuade <bmcquade@chromium.org>
Reviewed-by: Charlie Harrison <csharrison@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#672925}
35 files changed