[#1511] Fix NPE in AbstractTrafficShapingHandler which could happen if the READ_SUSPEND attr was not set yet
Add explaination to the javadocs to not call retain() on the request when doing the handshake. Related to [#1508]
Remove deprecated ByteBufUtil.release(..) and ByteBufUtil.retain(..) methods and its usage. Also fix a problem where an object would have been released two times.

* The problem with the release(..) calls here was that it would have called release on an unsupported message and then throw an exception. This exception will trigger ChannelOutboundBuffer.fail(..), which will also try to release the message again.
* Also use the same exception type for unsupported messages as in other channel impls.
[#1513] Use the correct names when add the websocket decoder and encoder
Fix NPE in OioByteStreamChannel

- Do not assign null to 'is' and 'os' but assign an alternative stream implementation
[#1515] Add WebSocketFrameEncoder and WebSocketFrameDecoder interfaces and let our impls implement it
[#1517] Only fire the exception throught the pipeline if the channel is registered when using VoidChannelPromise
[#1519] VoidChannelPromise don't fire CancellationException anymore which was incorrect
[#1516] Fix resource leakage which was caused by the AbstractDiskHttpData which did not release the buffer after copy to disk
[#1520] Release previous set buffer when setting a new data source
[#1521] Fix performance issue in AbstractHttpData
[#1523] Fix bug which lead to have SelectedKeys handled two times and so caused a NPE on heavy load
[#1524] Fix resource leak in HttpContentEncoder
Optimize HttpContentEncoder to do less memory copies as those are not needed
Correctly detect LastHttpContent after encoding
Simplify ByteBufProcessor and MessageListProcessor and Add internal component accessors to CompositeByteBuf

- Fixes #1528

It's not really easy to provide a general-purpose abstraction for fast-yet-safe iteration. Instead of making forEachByte() less optimal, let's make it do what it does really well, and allow a user to implement potentially unsafe-yet-fast loop using unsafe operations.
Add MessageList.first() and last() for convenience.

- Fixes #1530
Use MessageList.first() and last() wherever possible

- Related issue: #1530
Fix broken tests
Add a HttpPostRequestDecoder.destory() method which should be used to destroy the decoder and free up resources

* Also make the contract more clear about who needs to call release()