Provides an expandable set of buffers for writes. Non-blocking writes can be
of any size and may not be able to be written immediately or wholly contained
in the buffer used to perform the writes to the next layer. This class
provides a buffering capability to allow such writes to return immediately
and also allows for the user provided buffers to be re-used / recycled as
required.