Replace Buffer with IOBuf

The new IOBuf abstraction separates the ownership of the underlying
buffer from the particular view of it (offset, etc.).