ForkJoinPool-based EventLoopGroup and Channel Deregistration

Hey,

this is a first version of Netty running on a ForkJoinPool and deregister (hopefully) working correctly. The main idea behind the changes in deregister is that deregister is always executed as a task and never invoked directly. We also do not allow any new task submissions after deregister was called, making the deregistration task the last task of a particular Channel in the task queue and we thus do not have to worry about moving tasks between EventLoops. We achieve this mainly by wrapping all calls to .eventLoop() and .executor(). There is some special treatment required for scheduled tasks, but this is best explained in the code.

Let me know what you guys think.

@normanmaurer @trustin
We should rename `DEFAULT_EVENT_LOOP_THREADS` and its associated system property name to something else.  How about `io.netty.eventLoopParallelism` and `DEFAULT_EVENT_LOOP_PARALLELISM`? Please feel free to let me know if you have a better name in your mind.