[#1890] Correctly expand ByteBuffer array in all cases

The problem was that we did not handle the case correctly when doubling the array was not enough. We need to keep doubling until everything fits in.
Use direct ByteBuf for the test to make sure it is not copied
[#1893] Fix bug in JdkZlibDecoder which did not let it handle large data
Fix the problem where HashedWheelTimer puts a timeout into an incorrect place

- the stopIndex of a timeout is calculated based on the start time of the worker thread and the current tick count for greater accuracy
Fixes the problem where the promise of the outbound operation that causes a channel closure is notified after channelInactive()

- Fixes #1897
[#1895] Fix IllegalStateException which was produced during failing ChunkedWrite after the channel was closed
[#1898] No call fireExceptionCaught but just fail the write promise
Remove redundant index check
Pass eventLoop and childEventLoopGroup as Channel constructor parameters

- Add ServerChannelFactory for ServerBootstrap which is the counterpart
  of ChannelFactory for Bootstrap
Rename getChildGroup() to childEventLoopGroup() / Minor cleanup
Allow empty handler list when creating a new EmbeddedChannel

.. so that it can be used for dynamically initialized pipelines

- Fixes #1899
Fix compilation errors / Cleanup
[#1906] Use a ByteBuf allocator from the ByteBufAllocator when encode Strings
Ensure the selector implementation can be instrumented before attempting instrumentation

- Fixes #1908
[#1907] LengthFieldPrepender should better extend MessageToMessageEncoder for less memory copies
minor gc optimization: better DefaultHttpHeaders.iterator()
minor gc optimization: better DefaultSpdyHeaders.iterator()
Add HttpHeaders.contains(name, value, ...) to save creation of LinkedList for simple checks
bring back entries()
Merge pull request #1918 from wgallagher/entries

bring back entries()