As the ringbuffer is now in use for audio it makes sense to provide bulk
append and consume functions that are thread safe instead of adding
locking over all of the functions. This partially reverts the prior
commit that added the extra locking.
This allows us to set a callback to read a value out before it's about
to be overwritten which can be useful for things like calculating a
running average.