[#2709] Change ChannelOutboundBuffer to interface

Motivation:

We expose ChannelOuboundBuffer in Channel.Unsafe but make it impossible to create one instance without the usage of AbstractChannel. This makes it impossible to write a Channel implementation that not extends AbstractChannel.

Modifications:

Make ChannelOutboundBuffer an interface and add DefaultChannelOutboundBuffer which is used by AbstractChannel.

Result:

It's possible to write a Channel implementation which not extend AbstractChannel.