add helper function to improve the capabilities checking procedure at ctor()
change from manually checking each supported type to a loop query
add cc.Browser.supportWebAudio to check if Web Audio API is supported by browser
abstract cc.AudioEngine to be a super class, let previous implementation to be cc.SimpleAudioEngine
rename cc.SFX to cc.SimpleSFX, the Web Audio version needs a different SFX
add cc.WebAudioEngine, use it when browser supports Web Audio; currently, it's just a copy of cc.SimpleAudioEngine
extract support-type-checking procedure to cc.AudioEngine
finish ctor() and init() in cc.WebAudioEngine
now it can play music normally (except resumeMusic()); effects are to be done
now it can also resumeMusic(); so all music stuff is done
extract the codes of setting cc.AudioEngine.isMusicPlaying to a separate method
make isMusicPlaying() to be in cc.AudioEngine, less redundant
add extention checking when fetching data is required before playMusic()
now it can pause only when it's playing; it can resume only when it's paused
move isMusicPlaying() back to each implementation class, WebAudioEngine is not going to use cc.AudioEngine.isMusicPlaying property
now music's volume is saved in WebAudioEngine so it can be preserved among different music resources
use Web Audio API's playbackState property to indicate isMusicPlaying()
now that cc.AudioEngine.isMusicPlaying property is no longer used, _musicListener (called to update it when music is paused) can be fully removed in cc.WebAudioEngine
now it can play/pause/resume/stop a particular effect
update isMusicPlaying() in cc.WebAudioEngine, now it won't return null when it's not playing