Lots of changes to sampler core.
Lots of changes to sampler core.

- New ProtectedQueue class that is a subclass of SimpleQueue.
- Defined enum of buffer states.
- Added fields to SamplerVoice::Buffer.
- Voices have a number now, mostly for logging.
- Changed full and empty buffer queues to ProtectedQueue.
- Added mutex for prime().
- Tracking count of samples read so far.
- New queue_buffer_for_read() method of SamplerVoice.
- Simplified inverted mode for ChannelCVGate::read().
- Added more debug logs throughout.
- Buffers have their start sample now, and the reader uses that to seek,
  so that the reader is the only thread using the FS.
- prime() is aware of buffers that are actively being filled and just
  marks them for re-reading once the read is finished.
- Halting if no buffers are ready in dequeue_next_buffer().

flit/modular,flit/modular,flit/modular,flit/modular,flit/modular