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.