Refactor to use chans for communication instead of locks
Refactor to use chans for communication instead of locks

Previously we were getting various deadlocks and other race conditions.
The race detector now appears clean. However, we have to make sure all
functions in the audio loop execute within enough time for the next tick
to process and buffer the audio data. So far this is ok.

shazow/mog,mjibson/moggio,mjibson/mog,shazow/mog,mjibson/moggio,mjibson/moggio,shazow/mog,mjibson/mog,mjibson/mog,shazow/mog,mjibson/moggio,mjibson/mog