Fixes #415. Liquidated client memory leak associated with storage NetworkDispatcher in ThreadLocal.

Liquidated client memory leak associated with storage NetworkDispatcher in ThreadLocal.

The biggest problem was that `cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.encode()` sometimes called from Netty IO threads, NetworkDispatcher attach to this thread and will never GC. I fixed it with check `if(!ctx.executor().inEventLoop())`.
Also a small memory leak occurs when the loss of reference to ThreadLocal that contains NetworkDispatcher of client thread. I tried to fix it with adding WeakReference layer between ThreadLocal and NetworkDispatcher.

And explain to me why you want to receive NetworkDispatcher this way (with ThreadLocal and such a huge amount of hacks)?