documentation
byte-oriented ringbuffer implementation

It differs from the rbuf api because while rbuf represents a ringbuffer of
arbitrary pointers and the underlying data is managed by the caller, rbb is
instead byte oriented and allows read/write operations on binary data.
The memory is fully managed by rbb and prealloc'd when the ringbuffer is created.

The usage scenarios are different depending on the way the ringbuffer is being used.
Note also that while the rbuf api is thread-safe rbb is intended to be accessed by a single
thread and access should be serialized by the called in case the same ringbuffer
is shared among different threads