Adds support for a ring of audio buffers

If you wish to have low latency (you can't go generate a large audio
buffer without interrupting frame rendering), but you also don't want
audio skips when your app does something intensive, you need a ring of
buffers.

The application fills one buffer a time via write, meanwhile the
background thread writes one buffer at a time back to port audio.  This
way, you have very short individual writes, but a lot of audio for the
background thread to pull from if your app locks up for a bit.