use CDOSounds from BlocklyApps if Blockly not available

* extend CDOSounds to support options.volume and options.loop, add Sounds.stopLoopingAudio() and Sound.stop()
* change all calls to Blockly.loadAudio_() to BlocklyApps.loadAudio()
* in BlocklyApps.loadAudio(), use Blockly if available, else use CDOSounds if available (now passed into BlocklyApps appOptions as cdoSounds and stored as BlocklyApps.cdoSounds)