Introduce getResponseBodyAsByteBuffer, directly read from Netty ChannelBuffers

In NettyResponse, reading body involves building each chunk as a byte array, and then assembling them.

Netty aims zero-copy and provides CompositeChannelBuffer and means to convert a ChannelBuffer into ByteBuffer, InputStream, String, etc.

This PR also:
* upgrade to latest Netty
* add a new method Response.getResponseBodyAsByteBuffer, as some other APIs directly use a ByteBuffer of a CharBuffer