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
Fix maven-bundle-plugin life cycle mapping in Eclipse
Optimize the decoding and encoding of HTTP for better performance

* No need to calculate the hash of known header names multiple times
* Optimize header encoding
* Also optimize the encoding of known header values
* Optimize encoding of HTTP method, version and status
Fix NPE raised by HttpHeaders.equalsIgnoreCases() when one of its arguments is null
Add test case for HttpHeaders.equalsIgnoreCase(...)
Merge buffers for performance reasons if possible when encode http requests/responses.
Fix test