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.
This is the other flake8 warning. It should be:

``` python
buffer_slots = (
    self._buffer_sec * (audio_format.sample_rate / num_frames))
```