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
BTW we should use the same style for the exception messages.  In most places, we do this:

    argumentName: <badValue> (expected: condition)

in this case:

    "initialBufferCapacity: " + initialBufferCapacity + " (expected: >= 0)"