Fix PortAudio underruns (#132) by using async playback

This switches to async playback and fixes the periodic underruns observed in issue #132. Suggestions on style are welcomed.
Thanks; I didn't realize that on `_on_music_delivery()` could deliver a variable amount of frames.

So, there are some options to consider:

1. Don't bound the deque. Append each Spotify frame delivery as a queue entry; in the pyaudio callback, loop until `frame_count` frames have been read from the deque. Because the deque is unbounded, this approach could cause significant memory consumption if the pyaudio callback ever stops firing.
2. Generously size the deque and hope that in most cases, `_on_music_delivery()` delivers a large chunk of data (instead of say, pathologically delivering 10 bytes per callback for a while, consuming lots of deque slots).
3. ~~Store each frame as a deque entry.~~ (I've tried this in another project and CPU consumption is extremely high. Not a viable approach IMHO.)
4. Introduce a new datastructure, probably backed by a deque, that packs incoming data in to uniform frame lengths, allowing a deterministic calculation of the max buffer size and also CPU efficient reads. This structure will also need to support reading across multiple deque entries to return arbitrary frame counts.

Option 4 seems most correct, but also a bit overkill. Option 2 might be a reasonable compromise.

Thoughts?