telemetry: Add discrepancy-based latency jank metric

Add a metric for measuring touch/scroll latency jank. This is similar to
the existing jank metric based on frame completion times, and
correspondingly a smaller latency jank number is better and indicates
a smoother touch response.

BUG=309648
TEST=StatisticsUnitTest.testLatencyDiscrepancy

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253405 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 253405
Add notification mechanism when BrowserActionButton's icon has been updated.

In the browser actions container's chevron menu, a MenuItemView's icon comes from BrowserActionView::GetIconWithBadge() (which comes from BrowserActionButton's icon) when the MenuItemView is created. But, BrowserActionButton's icon may be not yet loaded in that timing because it is read from filesystem in another thread.
To solve this issue, we design an icon state observer in BrowserActionButton, a lifecycle observer in MenuItemView. A helper class whose instance binds to MenuItemView's lifecycle and listens to button's icon state, refresh the host menu item's icon when the button's icon was updated.

R=finnur@chromium.org
BUG=319619

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253406 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 253406