Track is responsible for playing itself

Since players and speakers get cleared and reinitialized each time
a track is stopped or started, might as well do it in the Track itself
and keep the logic as local as possible.

In moving the logic over, also move towards a Promise based model for
async making-things-happen-ness.

There's a lot of extraneous code. This is just the first commit where
everything works without exploding.
Fixes autoadvance bug when intentionally stopping play
Fixes broken autoadvance when track ends on its own
For those of you keeping score at home...

Yes, those were two consecutive bug fixes to fix:
  1. The track queue not advancing to the next track when the previous
     one ended.
  2. The track queue auto-advancing on its own when the user paused
     the current track.

Yes, this commit is a no-op just to point that out.
Remove unneeded require statement
Merge branch 'track-logic'

Also mark version 0.0.2