Rework audio-engine
Rework audio-engine

- extend emitter for events
- rename #loopRatio to #loopProgress
- add progress property, as a multiple of loopDuration
- make fadeOut fire callback when fade is ready
- move values into audio object as much as possible
- fix bug in gainNode.gain.exponentialRampToValueAtTime where value may not be 0

puckey/dance-tonite,puckey/dance-tonite