Add optimized ChannelOutboundBuffer implementations for the different channels. Related to [#2008]

This includes:
* merge buffers for NioSocketChannel by default. Can be disabled via configuration
* make ChannelOutboundBuffer abstract
* add default implementation of ChannelOutboundBuffer which is usable for most transports