PageLoadMetrics renderer and browser implementation.

This change addresses issues with lost UMA data, by pushing UMA metrics
to the browser process over IPC.

In the render process, we implement a RenderFrameObserver that attaches
to top-level frames, and pushes interesting document timing metrics to
the browser process.

In the browser process, we implement a WebContentsObserver that
receives the document timing metrics and UMA logs them. We implement
WebContentsObserver because, in a future change, we'll start observing
page close events in order to log cases where a page load is aborted
before a layout occurs.

See https://docs.google.com/document/d/1HJsJ5W2H_3qRdqPAUgAEo10AF8gXPTXZLUET4X4_sII/edit for additional details.

BUG=382542

patch from issue 1282303002 at patchset 740001 (http://crrev.com/1282303002#ps740001)

Review URL: https://codereview.chromium.org/1312213010

Cr-Commit-Position: refs/heads/master@{#350038}


CrOS-Libchrome-Original-Commit: 9fa62d54d03911d7a4120354d3e206ca69af4840
diff --git a/ipc/ipc_message_start.h b/ipc/ipc_message_start.h
index 1bdca18..718bfa7 100644
--- a/ipc/ipc_message_start.h
+++ b/ipc/ipc_message_start.h
@@ -125,6 +125,7 @@
   SafeJsonParserMsgStart,
   AttachmentBrokerMsgStart,
   RenderProcessMsgStart,
+  PageLoadMetricsMsgStart,
   LastIPCMsgStart  // Must come last.
 };