Added documentation to websocket classes.
#722 - Make WebSocketClientHandshakerFactory a static utility class
[#803] Make sure the right EventExecutor is used after re-register a Channel to another EventLoop
Add PooledByteBufAllocator + microbenchmark module

This pull request introduces the new default ByteBufAllocator implementation based on jemalloc, with a some differences:

* Minimum possible buffer capacity is 16 (jemalloc: 2)
* Uses binary heap with random branching (jemalloc: red-black tree)
* No thread-local cache yet (jemalloc has thread-local cache)
* Default page size is 8 KiB (jemalloc: 4 KiB)
* Default chunk size is 16 MiB (jemalloc: 2 MiB)
* Cannot allocate a buffer bigger than the chunk size (jemalloc: possible) because we don't have control over memory layout in Java. A user can work around this issue by creating a composite buffer, but it's not always a feasible option. Although 16 MiB is a pretty big default, a user's handler might need to deal with the bounded buffers when the user wants to deal with a large message.

Also, to ensure the new allocator performs good enough, I wrote a microbenchmark for it and made it a dedicated Maven module. It uses Google's Caliper framework to run and publish the test result (example)

Miscellaneous changes:

* Made some ByteBuf implementations public so that those who implements a new allocator can make use of them.
* Added ByteBufAllocator.compositeBuffer() and its variants.
* ByteBufAllocator.ioBuffer() creates a buffer with 0 capacity.
Fix the incorrect snapshot version number
Apply advanced JVM options to benchmarks / Fix duplicate uploads

- Add common optimization options when launching a new JVM to run a benchmark
- Fix a bug where a benchmark report is uploaded twice
- Simplify pom.xml and move the build instruction messages to DefaultBenchmark
- Print an empty line to prettify the output
Add the original copyright
Update license notices and dependencies
Refactor AIO Transport to allow to use Bootstrap without the ugly hack
Tell NioTask the cause of unregistration

- Add the 'cause' parameter to the channelUnregistered method
Fix inspection warnings
Port rebuildSelectors() from 3.6 to 4.0

- Fix #813
Add ByteBuf.maxWritableBytes()

- Fixes #806
Merge ByteBuf.hasNioBuffer() and hasNioBuffers()

- Fixes #797
Remove redundant copyright headers added by IntelliJ
Add methods that add/remove multiple ChannelFutureListeners to ChannelFuture

- Fixes #811
Refactor AIO Transport to allow to use Bootstrap without the ugly hack
Do not allow suspendIntermediaryDeallocations() after free()
Add missing 'operation(args, future)' for 'operation(args)'

- Fixes #818
- Fix inspector warnings
Make ChannelFutureNotifier accept multiple ChannelFutures