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
Improve documentation for the two-args formatter in LoggingHandler
codec-memcache: fix decoding issue for value parts.

This changeset fixes an issue when decoding would stop if the value
comes separated in two or more packets, leading to invalid bytes read.
codec-memcache: removed println in test case.
[codec-memcache] encode key directly, no need to use unpooled.
Port the HTTP / RTSP encoder and decoder from 4.0 branch as those are just faster.
Add FixedCompositeByteBuf which can be used to write an array of ByteBuf in an efficient way.

This implementation does not produce as much GC pressure as CompositeByteBuf and so is prefered,
for writing an array of ByteBufs. Be aware that FixedCompositeByteBuf is readonly.

When using this in a project that make heavy use of CompositeByteBuf for writes we was able to cut
down allocation to a half.
Replace usage of StringBuilder by AppendableCharSequence for performance reasons
[#2033] Correctly handle adding of IdleStateHandler after Channel was already active and registered
Better buffer leak reporting

- Remove the reference to ResourceLeak from the buffer implementations
  and use wrappers instead:
  - SimpleLeakAwareByteBuf and AdvancedLeakAwareByteBuf
  - It is now allocator's responsibility to create a leak-aware buffer.
  - Added AbstractByteBufAllocator.toLeakAwareBuffer() for easier
    implementation
- Add WrappedByteBuf to reduce duplication between *LeakAwareByteBuf and
  UnreleasableByteBuf
- Raise the level of leak reports to ERROR - because it will break the
  app eventually
- Replace enabled/disabled property with the leak detection level
  - Only print stack trace when level is ADVANCED or above to avoid user
    confusion
- Add the 'leak' build profile, which enables highly detailed leak
  reporting during the build
- Remove ResourceLeakException which is unsed anymore
Allow specifying a custom charset for a multipart Attribute

- Fixed #2025
- Adapted from @BabyDuncan's pull request: #2031
- Overall ugliness clean-up
codec-memcache: increase default buffer size and only encode extras if set.
[#2041] Make PlatformDependent.isRoot0() work on solaris