[#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