Add the ability to set the output device, just like a real BAPS.
I should probably add a description for this one!
This PR (along with a couple small Vagrant fixes), makes uses of the draft Audio Output Devices API, which has been available in Chrome for about a year now.
It enables you to configure a HTMLMediaElement's hardware output device, although with the caveat that the journey in for requesting access in the browser actually asks if you want to grant Microphone access, as the permission for Input/Output is the same.
By clicking on the channel name (e.g. "Channel 1") at the bottom of a channel, a new Channel Settings dialog appears, which currently only has this one new setting.
When this dialog is first opened, Chrome will ask the user for access to the microphone, and if granted the dropdown box shows an enumeration of available hardware output devices. These are numbered, and the mapping from number -> guid is persisted in local storage to prevent numbers flipping around from device connection/disconnection or browsers not having a deterministic API.
When the value of the input box is changed, the output of the channel is immediately changed, and this output mapping becomes stored in local storage too. Subsequent visits to Show Planner will reload the local storage configuration, re-request Microphone access if necessary, therefore persisting this configuration.
Re: Unsupported browsers, it either won't list devices, or when trying to switch will catch the failure and set back to default.
Did you mean to put all of @mstratford's or in here?
Not really, but it won't matter as long as his PR is merged first...