Don't use stale buffers when USB stream starts
Found by Rian Hunter (rian@alum.mit.edu), patch via discord:
When the USB stream was restarted there was no procedue to clear the buffers which may have accumulated after the last time it was stopped. This results in stale data at the beginning of new USB streams.
To prevent this we tag each buffer that was placed into the empty FIFO with a generation tag. We also change the generation tag after the USB stream is stopped. This makes it so that when the USB stream is restarted, any buffers that were placed into the empty FIFO before it was closed will be discarded. This has the effect of only allowing buffers that were placed into the empty queue after the USB stream was started to be sent back to the host.