Add basic support for "googDucking" to getUserMedia on Windows.
When enabled, this causes Chrome to open the default communication device instead of the "regular" default device (eConsole).
At the moment this only works for the default device (i.e. when getUserMedia is called _without_ a sourceId constraint). But it is possible to implement this for other audio devices and I'll do so in a followup CL.
While doing this I also fixed a few other things that I ran into:
* Added support for the 'AudioParameters::DUCKING' effect in the WASAPI audio implementation.
* Refactored WASAPIAudioInputStream:
Removed HardwareSampleRate and HardwareChannelCount since they duplicate work and added GetInputStreamParameters instead.
* Fixed AudioManager::GetInputStream to return format == linear AudioParameters on XP (previously it would always return 'low latency').
* Fixed AudioManager::GetInputStream to return a 10ms default buffer size for the low latency path instead of a fixed buffer size of 2048.
* Fixed a race issue with how CoreAudio::IsSupported was being used. Also added documentation/warning about the implementation properties of that function.
- This race has been causing tests to be flaky (for example the InputVolumeTest has been red for weeks on the Windows audio bot: http://build.chromium.org/p/chromium.gpu.fyi/waterfall?builder=Win7%20Audio
* Removed the InvalidPacketSize test since it doesn't make sense anymore. The code that InvalidPacketSize has been testing, has been gone for 6 weeks now and the Windows audio bot has been red that entire time.
TEST=Manually run the "WASAPIAudioInputStreamRecordToFile" test while playing out audio in another application (or a youtube clip). The playing audio should lower in volume while the test runs.