Remove the explicit dependency between HTMLMediaElement and MediaControls
wrt the cast buttons.

OnRemotePlaybackAvailabilityChanged, OnRemotePlaybackConnecting,
and OnRemotePlaybackDisconnected are replaced by MediaControlsMediaEventListener
via an availability callback and listening for connect, connecting and disconnect
events on the RemotePlayback object off the MediaElement.

OnDisableRemotePlaybackAttributeChanged is replaced by a MutationObserver kept by
MediaControlsImpl.

RemotePlayback has methods that allow it to be used from C++ directly.

BUG=517102
TEST=existing and new tests + manual

Review-Url: https://codereview.chromium.org/2782373002
Cr-Commit-Position: refs/heads/master@{#468223}
16 files changed