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
Fix bugs in ZLIB codec where they produce malformed stream or their streams are not flushed on time

- Fixes #2014
- Add the tests that mix JDK ZLIB codec and JZlib codecs
- Fix a bug where JdkZlibEncoder does not encode the GZIP header when nothing was written to te channel
- Fix a bug where the encoders do not consider the overhead of the wrapper format when calculating the estimated compressed output size.
- Fix a bug where the decoders do not discard the received data after the compressed stream is finished
Remove the use of ThreadLocal for performance reasons
[#2021] No need to synchronize for unpooled chunks
Fix checkstyle
Optimize and clean up LoggingHandler

- Use ': ' instead of '(...)' for simpler string concatenation and prettier presentation
- Optimize the overall performance of format*() methods
- All format*() methods are now expected to encode the channel information by themselves so that StringBuilder instances are created less often.
- Use a look-up table for generating per-row prefixes
- Hid formatByteBuf(), formatByteBufHolder(), and formatNonByteBuf() from user because a user can always override format(ctx, eventName, arg).  For example, to disable hexdump:

    protected void format(ChannelHandlerContext ctx, String eventName, Object arg) {
        if (arg instanceof ByteBuf) {
            super.format(ctx, eventName, arg.toString());
        } else {
            super.format(ctx, eventName, arg);
        }
    }
Make LoggingHandler.appendHexDump(..) protected for the subclasses
Simplify two-args message formatter in LoggingHandler
Rename formatUserMessage to formatSimple and use it in two-args formatter in LoggingHandler