Move methods from ChannelHandler to ChannelStateHandler like proposed in [#1107]
Move DefaultChannelPipeline.notifyHandlerException() to DefaultChannelHandlerContext / Always trigger exceptionCaught() at the handler that raised an exception

- Related: #1118
Simplify ChannelInboundMessageHandlerAdapter.inboundBufferUpdated() implementation
Make PlatformDependent work with the platforms without unaligned access support
Fix checkstyle
Move exceptionCaught(..) back to ChannelHandler. Related to [#1118]
Make hasUnsafe() return true only when all necessary low level operations are available for reliable direct buffer access
Provide a way to implement an ChannelInbound/OutboundMessageHandler conveniently without extending an adapter class

- Add ChannelHandlerUtil and move the core logic of ChannelInbound/OutboundMessageHandler to ChannelHandlerUtil
- Add ChannelHandlerUtil.SingleInbound/OutboundMessageHandler and make ChannelInbound/OutboundMessageHandlerAdapter implement them.  This is a backward incompatible change because it forces all handler methods to be public (was protected previously)
- Fixes: #1119
Change ByteBufAllocator.buffer() to allocate a direct buffer only when the platform can handle a direct buffer reliably

 - Rename directbyDefault to preferDirect
 - Add a system property 'io.netty.prederDirect' to allow a user from changing the preference on launch-time
 - Merge UnpooledByteBufAllocator.DEFAULT_BY_* to DEFAULT
Add more variants of ByteBufAllocator.ioBuffer() / Update Javadoc
Warn in case of incomplete low-level API
Re-enable some critical tests