Use AudioStreamMonitor to control power save blocking.
Prevents looping, soundless videos from preventing system sleep if they're
in a background tab. We don't want soundless videos in the main tab to
allow sleeping as they'll impact the muted video + captions use case.
Reworks WebContentsImpl to track active media players and whether the
attached WebContents is visible. When visible and there's an active video
player, it will create a power save blocker. One blocker is shared for all
active media players for simplicity.
Reworks AudioStreamMonitor to handle the PowerSaveBlocker for audio
such that one is only created when non-silent audio is present.
To prevent splitting power blocking duties across chrome/ and content/,
AudioStreamMonitor now lives in content/. WebContents exposes a
WasRecentlyAudible() method for the existing tab audio indicator.
BUG=43667,367785
TEST=manual.
Review URL: https://codereview.chromium.org/
478543003
Cr-Commit-Position: refs/heads/master@{#294303}