Mixing audio with different latency requirements.

Follow-up is introducing mixing for audio other than media elements (under finch).

** Helper changes:
1) AudioDeviceFactory: Added  separate categories for WebAudio source basing on expected output latency. Not used by WebAudio right now, but they give a sense of what to expect in the nearest future regarding output latency requirements. (May be dropped for now).

2) AudioLatency class is introduced; latency-based output buffer size calculation is moved into it.

** Mixing changes:
3) AudioRendererMixerPool/AudioRendererMixerManager:
* latency requirement is introduced as one more ARMInput parameter; now it’s a part of ARM key. The mixing strategy (see ARM key comparison) is that only inputs with the same latency requirements can be mixed together;  LATENCY_EXACT_MS inputs are mixed only with the likewise and only if they have the same buffer duration.
* ARMM adjusts mixer output buffer siza based on input latency and output sample rate.

BUG=560378,564472

Review-Url: https://codereview.chromium.org/2067863003
Cr-Commit-Position: refs/heads/master@{#403120}
26 files changed