Worker-based note scheduling and refactoring

I added a worker that drives the scheduler, refactored the Instrument interface a little bit (Tim G, your instrument interface commit is part of this pull request), and actually implemented note scheduling for normal playback (no loops).

I also separated the library into multiple files and set the project up for builds with gulp.

Finally, I added the simple HTML page I've been testing the library with to the demos folder.