Split up the nioBuffers() method to allow for inline. Related to #1812

This move less common method patterns to extra methods and so make the nioBuffers() method with most common pattern (backed by one ByteBuffer) small enough for inlining.
Move encode of chunked content to an extra method, this allows for inline. Related to #1812

encode of chunked content is not the most common pattern so moving it to an extra method makes it possible to inline the rest as it is a smaller method now.
Ensure operationProgressed is invoked even on completion

- Fixes #1809
Use a Thread-local based direct buffer pool if non pooled allocator is used
Optimize the http-codec to be much faster then before.

This includes the following changes:
  * Rewrite HttpObjectDecoder to use ByteToMessageDecoder
  * Optimize parsing of the header
  * Allow to disable the header validation for performance reason
  * Not need to validate kwown header names and values
  * Minimize access of ThreadLocals
  * Optimize parsing of initial line
Merge remote-tracking branch: upstream/master