Backport the tests in ReentrantChannelTest

- Originally from c149f4bcc0c0d02aa1abcd5e39c155a9e598822e by @wgallagher
[#1710] Add missing duplicate() overrides in interfaces
Remove the irrelevant AIO channel options
[#1876] Make use of proper state machine in WebSocket08FrameDecoder for performance reasons
use enum for state in EmbeddedChannel
use enum for state in LocalChannel
Fix checkstyle
Allow empty handler list when creating a new EmbeddedChannel

.. so that it can be used for dynamically initialized pipelines

- Fixes #1899
Clean-up ChannelOutboundBufferTest

- partial port of 136e1ebba8a3965dab888d21aaa292ce921c704d
[#1907] LengthFieldPrepender should better extend MessageToMessageEncoder for less memory copies
Replace UniqueName with Constant and ConstantPool

- Proposed fix for #1824

UniqueName and its subtypes do not allow getting the previously registered instance.  For example, let's assume that a user is running his/her application in an OSGi container with Netty bundles and his server bundle.  Whenever the server bundle is reloaded, the server will try to create a new AttributeKey instance with the same name.  However, Netty bundles were not reloaded at all, so AttributeKey will complain that the name is taken already (by the previously loaded bundle.)

To fix this problem:

- Replaced UniqueName with Constant, AbstractConstant, and ConstantPool.  Better name and better design.

- Sctp/Udt/RxtxChannelOption is not a ChannelOption anymore.  They are just constant providers and ChannelOption is final now.  It's because caching anything that's from outside of netty-transport will lead to ClassCastException on reload, because ChannelOption's constant pool will keep all option objects for reuse.

- Signal implements Constant because we can't ensure its uniqueness anymore by relying on the exception raised by UniqueName's constructor.
Add a shortcut method for collision-free naming
Split HttpPostRequestDecoder into HttpPostStandardRequestDecoder and HttpPostMultipartRequestDecoder / Add HttpData.maxSize

- Related issues: #1937 #1938 and #1946
- Add InterfaceHttpPostRequestDecoder and Make HttpPostRequestDecoder implement it
- HttpPostRequestDecoder actually delegates itself to HttpPostStandardRequestDecoder or HttpPostMultipartRequestDecoder
- Remove IncompatibleDataDecoderException because it's not thrown anywhere now
Fix some inspector warnings
Add a getter method for accessing the ClassPool of JavassistTypeParameterMatcherGenerator

.. so that a user can even manipulate the class pool as they wish.
Implementing the Binary Memcache protocol

This changeset implements the full memcache binary protocol spec, including
a first batch of tests. Ascii protocol and more coverage and helper classes
will follow.
Use StringUtil.simpleClassName(..) instead of Class.getSimpleName() where necessary

- Class.getSimpleName() doesn't render anonymous classes very well
- + some minor cleanup
adding memcache codec to netty-all project.
Moved constant classes out of util
Fixed various inspector warnings