[EventTiming] Implement Event Timing API

What does the API do?
The Event Timing API allows users to observe event latency. The Event Latency of
an event refers to the duration between the occurrence of an event and the time
all default actions and listeners on the event path are finished. It also
provides the ability to buffer event-timing entries before onload.

How to use this API?
1. new PerformanceObserver(callback).observe({ entryTypes: ['event'] });
2. performance API: getEntriesByType('event') and getEntries/getEntriesByName

How is it implemented in this patch?
The main working logics are in EventTiming and Performance. Performance is
responsible for managing the event timing buffer and entries, while EventTiming
is responsible for the measuring logics.

API proposal doc - Minimal Event Timing Web Perf API:
https://github.com/WICG/event-timing/blob/master/README.md

Bug: 823744
Change-Id: Ife010bf141c5a3741b8a6f0e43e42e107bd734c2
Reviewed-on: https://chromium-review.googlesource.com/971361
Commit-Queue: Liquan (Max) Gǔ <[email protected]>
Reviewed-by: Dave Tapuska <[email protected]>
Reviewed-by: Timothy Dresser <[email protected]>
Cr-Commit-Position: refs/heads/master@{#556511}
43 files changed