Rewrite handling of DTK (streaming) audio.

The primary motivation here is to make sure we submit samples from the
CPU thread. This makes sure the timing of related interrupts accurate,
and generally keeps the different kinds of audio synchronized.  This will also
allow improvements to audio dumping functionality.

The new code is also more concise because it gets rid of some duplicated
audio mixing code.
Audio mixer: add 20ms silence when the buffer is empty.

This makes the audio output deal with situations where there temporarily
aren't enough samples available much more gracefully.