ChannelHandler*Adapter cleanup / Removal of ChannelHandlerContext.hasNext*()

This pull request has the following changes:

* Rename `ChannelHandlerAdapter` to `ChannelDuplexHandler`
* Add `ChannelHandlerAdapter` that implements only `ChannelHandler`
* Rename `CombinedChannelHandler` to `CombinedChannelDuplexHandler` and improve runtime validation
* Remove `ChannelInbound/OutboundHandlerAdapter` which are not useful
* Make `ChannelOutboundByteHandlerAdapter` similar to `ChannelInboundByteHandlerAdapter`
* Make the tail and head handler of `DefaultChannelPipeline` accept both bytes and messages. `ChannelHandlerContext.hasNext*()` were removed because they always return `true` now.
* Removed various unnecessary null checks.
* Correct method names: `inboundBufferSuspended` -> `channelReadSuspended`

Miscellaneous changes that actually belong to the other pull request:
* Add `FilteredMessageBuf` - will cherry-pick this separately.