Video Wake Lock: move all logic to Blink and use mojo service.

This is implementing VideoWakeLock insideo core/html/media/ in Blink.
The component is created by the HTMLVideoElement and then reacts based
on internal events. When the wake lock state changes, it uses the wake
lock service to notify of the state change.

Two side notes:
 - This is using the RemotePlaybackObserver/RemotePlaybackController that
   were added to allow core/ to be notified of remote playback changes. It
   allows to clarify a weird behavior that was in the browser
   implementation.
 - html_media_test_helper.{h,cc} files have been created to have a
   central place for common html media mock, stubs, etc.

The audio wake lock is based on audibility, not on the element itself.
Whether it can or should be moved to Blink wasn't yet decided.

Associated design doc:
https://docs.google.com/document/d/1VNX6OIKodKg9-SWnY8eWiu2217b7FsgCECV2_wBap0U/edit?hl=en&pli=1#

Bug: 903793
Change-Id: I5f3f7fdfa345ef829f3efdc5689faef40b03f94c
Reviewed-on: https://chromium-review.googlesource.com/c/1375098
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Mounir Lamouri <mlamouri@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616728}
15 files changed