Put audio output into a worker thread.

@DonLakeFlyer This puts audio output into its own thread. Tested on Mac OS. Still could remove a bunch of cruft, but I'd like to split that from solving the buffering issue.