A wrapper around OwnedBuffer that allows carving out independent child OwnedBuffers
and recovering the original OwnedBuffer via a SplittableBufferHandle once all child
buffers have been dropped.
Reads the specified block-aligned logical range (start..end) into one or more OwnedBuffer
chunks with zero copies, streaming each chunk sequentially to callback.