Introduce media::AudioPushFifo and a couple of use cases (and clean-ups).

The media::AudioPushFifo is yet another FIFO for audio data.  It is the
"push" version of the existing media::AudioPullFifo.

Two audio-handling implementations are switched over to using the new
AudioPushFifo in this change, with a few more to follow in later
changes:

1. Cast Receiver glue: While there was no FIFO before, one will be
required due to future refactoring work in the MediaStream audio
framework.  In addition, a time value calculation was fixed, to adhere
to the media::AudioCapturerSource interface contract.

2. content::WebAudioCapturerSource: The code using the AudioFifo
implementation was simplified by using AudioPushFifo instead.

BUG=577881, 577874

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

Cr-Commit-Position: refs/heads/master@{#377457}
12 files changed