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.
I think this should be moved to before the `self._stream` assignment so that the attribute exists before PyAudio gets a callback which will try to use the attribute.