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
[#1994] DefaultPromise.cancel() should reuse CancellationException for performance reasons
Improve doc of IdleStateHandler according to example given in UptimeClientHandler (L57)
Introduce ChannelHandlerInvoker, dedeciated for invoking event handler methods, and move most handler invocation code in ChannelHandlerContext to the default ChannelHandlerInvoker implementation

- Fixes #1912
- Add ChannelHandlerInvoker and its default implementation
- Add pipeline manipulation methods that accept ChannelHandlerInvoker
- Rename Channel(Inbound|Outbound)Invoker to
  Channel(Inbound|Outbound)Ops to avoid confusion
- Remove the Javadoc references to the package-private interfaces
Avoid memory leak when encoding the key
[#1682] HttpVersion.valueOf(...) should not convert to uppercase
Use the same HttpHeaders optimisations in master as in 4.0
Fix compile errors caused by last commit
[#2003] Generate a io.netty.util.Version class which holds the version
Optimize check for equals header name and value
Optimize DefaultHttpHeaders.contains(...)
Respect validateHeaders when duplicate/copy the response/request
[#2005] Allow to use HttpContentDecompressor in strict mode
[#2006] Correctly handle HttpMessage / HttpContent implementations
Simplify bundle generation / Add io.netty.versions.properties to all JARs

- Fixes #2003 properly
- Instead of using 'bundle' packaging, use 'jar' packaging.  This is
  more robust because some strict build tools fail to retrieve the
  artifacts from a Maven repository unless their packaging is not 'jar'.
- All artifacts now contain META-INF/io.netty.version.properties, which
  provides the detailed information about the build and repository.
- Removed OSGi testsuite temporarily because it gives false errors
  during split package test and examination.
- Add io.netty.util.Version for easy retrieval of version information
Remove the distinction of inbound handlers and outbound handlers

- Fixes #1808
- Move all methods in ChannelInboundHandler and ChannelOutboundHandler up to ChannelHandler
- Remove ChannelInboundHandler and ChannelOutboundHandler
- Deprecate ChannelInboundHandlerAdapter, ChannelOutboundHandlerAdapter, and ChannelDuplexHandler
- Replace CombinedChannelDuplexHandler with ChannelHandlerAppender
  because it's not possible to combine two handlers into one easily now
- Introduce 'Skip' annotation to pass events through efficiently
- Remove all references to the deprecated types and update Javadoc
Merge package private interfaces into public ones.

- Related: #1989 and #1991