Make NioSocketChannelTest more bullet-proof

Motivation:
I had the NioSocketChannelTest.testFlushCloseReentrance() fail sometimes on one of my linux installation. This change let it pass all the time.

Modification:
Set the SO_SNDBUF to a small value to force split writes

Result:
Test is passing all the time where it was sometimes fail before.
Mark sun.nio.ch as optional

Motivation:

If sun.nio.ch is not optional this will cause troubles in the
OSGi world. The package is not exposed by default in OSGi, so
actually the whole netty framework cannot be used directly.

There are workarounds, but workarounds are ugly. Especially since
the use of sun.nio.ch is optional. So the requirement on the
package should be optional as well.

Modifications:

Make the import of sun.nio.ch optional.

Result:

If the package cannot be imported it will behave as if the package
sun.nio.ch is not present (like with other JVMs). If the package is
exposed in OSGi (e.g. bootclassloader delegation, extension fragment)
it will be used.
Add proxy protocol decoder

Motivation:
The proxy protocol provides client connection information for proxied network services. Several implementations exist (e.g. Haproxy, Stunnel, Stud, Postfix) but the primary motivation for this implementation is to support the proxy protocol feature of Amazon Web Services Elastic Load Balancing.

Modifications:
This commit adds a proxy protocol decoder for proxy protocol version 1 as specified at http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt. The foundation for version 2 support is also in this commit but it is explicitly NOT supported due to a lack of external implementations to test against.

Result:
The proxy protocol decoder can be used to send client connection information to inbound handlers in a channel pipeline from services which support the proxy protocol.