Buffered encoder 4.0

Introduce a new abstract codec called MessageToBufferedByteEncoder which allows to buffer written data into one buffer.

Using the sub-class in protocols that allows for pipelining or for cases where the messages are made out of multiple parts can improve performance a lot. To show this HTTP was moved over to use the MessageToBufferedByteEncoder which shows a large performance improvement
Perhaps we could use `ByteWriter` instead of `Encoder` here and keep `Encoder` hidden? We could just add basic `writeFileRegion()` implementation to `AbstractByteBuf` or somewhere else.