Bug 1027713 - Part 1 - Add a volume API in cubeb and use it instead of doing our own soft gain. r=kinetik

--HG--
extra : rebase_source : c94c9f6792c002d515f2fee0cf708928e76f91a8
Bug 1027713 - Part 2 - Add a cubeb API to query the name of the audio output device in use. r=kinetik

--HG--
extra : rebase_source : fed39350db9e7c56c003a288e040fd6f901088d2
Bug 1027713 - Part 3 - Add a cubeb API to signal that the output device changed.  r=kinetik

The reentrant mutex is needed so that users can call back into cubeb's API from
the callback.

--HG--
extra : rebase_source : 42e7c8f09d02b30b35a7f80418df5e722b52faae
Bug 1027713 - Part 4 - Pan audio to the right when we are using gUM and outputing sound using MacBookPro speakers. r=jesup

--HG--
extra : rebase_source : d77a3e6d17b237dc46301a34ed36b6d3e8e0aeda
Bug 1023947 - Part 1 - Drop frame instead of buffering them when we are swiching device.  r=jesup

--HG--
extra : rebase_source : 9e5f70c2c8aa9bc826e8bee561285da5220bf895
Bug 1023947 - Part 2 - Allow getting the current input device in cubeb.  r=kinetik

--HG--
extra : rebase_source : bc273a2f790b2fa09e8c50c95091f5db9856d42b
Bug 1023947 - Part 3 - Reset the output AudioStream when switching to an audio input device that uses the headphone jack on osx. r=jesup

--HG--
extra : rebase_source : 7b7bc135dbc5ea9d2b76738ff3fc57cbb962eed2
Bug 1027713 - Part 5 - Trigger the panning logic on stream creation. r=jesup

UpdateStreamOrder is not called often because it's expensive (it's called only
when the graph topology changed), and it's earlier in the MSG loop than the
audio stream creation, so we need to tell the newly created AudioStream that a
microphone is active on creation as well.

The panning logic is also now triggered on stream start, because it is async.