Caching entity body

This PR adds support for an entity body decorator that allows seeking over previously read data from a non-seekable stream. As bytes are read from the remote stream, they are written to the current position of the buffer stream.