[#887] [#866] [#883] Add unified interface for Message oriented protocols and also use direct buffers for them
[#884] Split SCTP transport into extra module
Make sure the Unpooled.EMTPY_BUFFER can not be freed and the capacity can not be changed
Make sure we catch UnsupportedOperationException for derived buffers
Safe copy of buffer for test
Don't spin the CPU so much in tests
Add some of the metrics mentioned in #718

use single static initialization of available metrics monitor registries

* This changes the original implementation to work in a similar way to
how slf4j selects and loads an implementation.
* Uses a single static instance so intialization is done only once.
* Doesn't throw IllegalStateException if multiple implementations are
found on the classpath. It instead selects and uses the first
implementation returned by iterator()
* Class left as an iterable to keep the API the same

add yammer metrics to examples to allow them to publish metrics

publish the number of threads used in an EventLoopGroup see issue #718

* seems like the better place to put this because it sets the default
thread count if the MultithreadEventLoopGroup uses super(0,...)
* It also happens to be the common parent class amongst all the
MultiThreadedEventLoopGroup implementations
* Count is reported for
io.netty.channel.{*,.local,.socket.aio,.socket.nio}

fix cosmetic issues pointed out in pull request and updated notice.txt

see https://github.com/netty/netty/pull/780

count # of channels registered in single threaded event loop

measure how many times Selector.select return before SELECT_TIME
Optimize AbstractByteBuf.adjustMarkers()
[#882] Add a PartialFlushException which will allow to notify the user that the flush/write was only partial succesful
Fix a link in ZlibWrapper
Call Freeable.free() if a Freeable message reaches the end of the ChannelPipeline to guard against resource leakage
[#844] [#867] Add UDT transport
Add example which start a server in a applet to show there is no issue anymore. Related to [#689]
Remove unnecessary finally block
Give a handler more control over how its buffers' read bytes are discarded.

This pull request adds two new handler methods: discardInboundReadBytes(ctx) and discardOutboundReadBytes(ctx) to ChannelInboundByteHandler and ChannelOutboundByteHandler respectively. They are called between every inboundBufferUpdated() and flush() respectively. Their default implementation is to call discardSomeReadBytes() on their buffers and a user can override this behavior easily. For example, ReplayingDecoder.discardInboundReadBytes() looks like the following:

    @Override
    public void discardInboundReadBytes(ChannelHandlerContext ctx) throws Exception {
        ByteBuf in = ctx.inboundByteBuffer();
        final int oldReaderIndex = in.readerIndex();
        super.discardInboundReadBytes(ctx);
        final int newReaderIndex = in.readerIndex();
        checkpoint -= oldReaderIndex - newReaderIndex;
    }

If a handler, which has its own buffer index variable, extends ReplayingDecoder or ByteToMessageDecoder, the handler can also override discardInboundReadBytes() and adjust its index variable accordingly.
Add ByteToMessageCodec.isEncodable()
Make ByteToMessageCodec.isEncodable() public like other similar methods
Rename MessageToMessageEncoder.freeInboundMessage() to freeOutboundMessage()
Make all encoder/decoder methods overridable in MessageToMessageCodec
Add missing codec operations in ByteToMessageCodec