Accepts a stream of Cells. This can be used to build a block of cells during compactions
and flushes, or to build a byte to send to the client. This could be backed by a
List<KeyValue>, but more efficient implementations will append results to a
byte to eliminate overhead, and possibly encode the cells further.
Implementation must copy the entire state of the Cell. If the written Cell is modified
immediately after the write method returns, the modifications must have absolutely no effect
on the copy of the Cell that was added in the write.
Let the implementation decide what to do. Usually means writing accumulated data into a
byte that can then be read from the implementation to be sent to disk, put in the block
cache, or sent over the network.