[#1976] Fix IndexOutOfBoundsException when calling CompositeByteBuf.discardReadComponents()
Allow to override how wrapped direct ByteBuffer are allocated to make it easier to extend
Also allow to override how direct ByteBuffers are freed
Adding check for zero readable bytes in WebSocket08FrameDecoder decode.
Fix regression introduced by 4c7fa950cc4f4c52eeaae5887335b1f3047592f8

- Some promises were not fulfilled when SSLEngine produces 0 bytes.
Also allow to disable header validation via HttpServerCodec and HttpClientCodec. Related to [#1981]
[#1982] Limit the usage of ThreadLocal.get() for performance reasons
Remove unnecessary parenthesis
Support for empty HTTP request header values.
Resurrect Channel.id() with global uniqueness

- Fixes #1810
- Add a new interface ChannelId and its default implementation which generates globally unique channel ID.
- Replace AbstractChannel.hashCode with ChannelId.hashCode() and ChannelId.shortValue()
- Add variants of ByteBuf.hexDump() which accept byte[] instead of ByteBuf.
Bring back ChannelGroup.find(id)
Fix an unexpected IllegalStateException from a selector loop when a user cancels a connection attempt

- Fixes #1986
Additional fix for potential race condition which occurs when a user cancels a connection attempt

- Fixes #1986