revid: senders have their own ringbuffer

Issue #79 resolved
Saxon Milton created an issue

Having a single ringbuffer at the start of the pipeline means that when we have multiple senders, any delay in send by one sender will slow all senders, and also, any attempt to retry a send by one sender will also delay senders. It is therefore proposed that senders posses their own ringbuffers. This means that when a single sender is slow to send or fails, it may recover without halting other senders and then catch up. It may continue retrying and not disturb the other senders regardless of how long it takes to fix the issue. This also means that for senders that do not require the ability to resend, they can have a smaller sized buffer in comparison to the other senders.