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
It will create as many `PausableChannelEventExecutorImpl` instances as the number of context objects.  Considering that a usual pipeline contains more than 4 context objects, it's pretty big increase in garbage production.  How could we reduce this?