New User Experience Work: added "Settings" and "AudioDevice" to JS

* added a Settings API to JavaScript
* added first cut at AudioDevice API to JavaScript
    * supports setting/getting input and output audio device
    * supports changing the audio input or output devices mid-flight, so you can change input without restarting the app
* deleted some old dead code in Hand related to voxel drumming that had been moved to JS
* made sure Application settings was accessed in a thread safe manner by getting rid of getSettings() and converting to lockSettings()/unlockSettings()
* reorganized a bunch of files in interface to clean up the directories

closes #2286, closes #2287