Fix #1435 and #1436 by reverting 7f7bf304b0b43a1445e68c15ee6f6403c7ca5b9e

Different PooledByteBufs can have the reference to the same PooledChunk (and its ByteBuffer), so it's incorrect not to create a duplicate.
[#1390] Make sure RxtxChannel does not block forever when reading
Make sure writing empty ByteBuf will not cause a stavation.

This also fixes [#1436]
Let MessageList implement Iterable
Use Correct NoSuchElementException
Make sure WebSocketFrameAggregator and HttpObjectAggregator don't leak ByteBufs
Correctly write MessageList which contains more then one message
Implement cancellation properly for Promise/Future

- Related issue: #1432
- Add Future.isCancellable()
- Add Promise.setUncancellable() which is meant to be used for the party that runs the task uncancellable once started
- Implement Future.isCancelled() and Promise.cancel(boolean) properly
Implement Promise/Future cancellation properly for outbound traffic

- Related issue: #1432
- Make sure the Promise of a write operation is not cancellable before writing out
Implement the cancellation of connection attmpe for NIO and OIO transport

- Related issue: #1432
- Also added test cases to validate the implementation
[#1439] Fix CompositeByteBuf.nioBufferCount() to return the correct number
Fix checkstyle
Cleanup
"  " -> " " / Cleanup
Make PooledByteBuf recyclable regardless its maxCapacity

- Make AbstractByteBuf.maxCapacity internally mutable so that PooledByteBuf is completely recyclable
Make write operation cancellation while it's in progress

.. which should be useful when writing a large buffer/file
Remove unused thread local and its getter
Add GlobalEventExecutor

- Related issue: #1389
- Also extracted SingleThreadEventExecutor.ScheduledFutureTask into a top level class for a reuse
Remove the constructors that uses ImmediateEventExecutor from DefaultChannelGroup

.. which is incorrect in my opinion.

+ minor cleanup
Make EventExecutor.shutdownGracefully() return Future

- Also added EventExecutor.terminationFuture()
- Also fixed type signature problem with Future.add/removeListener()
- Related issue: #1389