Netty

Implement an uber efficient network engine based on the Java NIO
framework Netty. This is basically a complete rewrite of the Minecraft
network engine with many distinct advantages. First and foremost, there
will no longer be the horrid, and redundant case of 2, or even at times,
3 threads per a connection. Instead low level select/epoll based NIO is
used. The number of threads used for network reading and writing will
scale automatically to the number of cores for use on your server. In
most cases this will be around 8 threads for a 4 core server, much
better than the up to 1000 threads that could be in use at one time with
the old engine. To facilitate asynchronous packet sending or receiving
(currently only chat), a thread pool of 16 threads is kept handy.
== Plugin incompatibilities
As a side effect of this change, plugins which rely on very specific
implementation level details within Minecraft are broken. At this point
in time, TagAPI and ProtocolLib are affected. If you are a user of
ProtocolLib you are advised to update to the latest build, where full
support is enabled. If you are a user of TagAPI, support has not yet
been added, so you will need to install the updated ProtocolLib so that
TagAPI may use its functions.
== Stability
The code within this commit has been very lightly tested in production
(300 players for approximately 24 hours), however it is not guaranteed
to be free from all bugs. If you experence weird connection behaviour,
reporting the bug and steps to reproduce are advised. You are also free
to downgrade to the latest recommend build, which is guaranteed to be
stable.
== Summary
This commit provides a reduction in threads, which gives the CPU /
operating system more time to allocate to the main server threads, as
well as various other side benefits such as chat thread pooling and a
slight reduction in latency.
This commit is licensed under the Creative Commons
Attribution-ShareAlike 3.0 Unported license.

Conflicts:
	pom.xml
	src/main/java/net/minecraft/server/PendingConnection.java
Create the protocol list one time instead of at each request.
First bits for packet manipulating with netty.
Add debugging to netty.
Netty: Do not print empty arrays.
Netty: Manipulate packets.
Remove TODO.
Make NMShandlerKey final.
Entity Activation Range# This feature gives 3 new configurable ranges that if an entity of the matching type is outside of this radius of any player, will tick at 5% of its normal rate.

This will drastically cut down on tick timings for entities that are not in range of a user to actually be "used".
This change can have dramatic impact on gameplay if configured too low. Balance according to your servers desired gameplay.

Conflicts:
	src/main/java/net/minecraft/server/World.java
	src/main/java/org/bukkit/craftbukkit/CraftWorld.java
	src/main/java/org/bukkit/craftbukkit/Spigot.java
	src/main/java/org/bukkit/event/WorldTimingsHandler.java