Improvements to Player Lookup

Minecraft and CraftBukkit both use Arrays to store online players,
and any time a player needs to be looked up by name or UUID,
the system iterates all online players and does a name or UUID comparison.

This is very ineffecient and can reduce performance on servers with high player count.

By using a map based approach for player lookups, player lookup should
be consistent in performance regardless of how many players are online.
 Optimize TileEntity Ticking

Re-organizes the servers TileEntity Tick List to be bucketed based on their tick interval.

We now will not even store a Tile Entity that is known to not have any tick function
(half of them), skipping time spent iterating them and checking if they are valid
and in a loaded chunk. In other words, a lot of "meta" time wasted on tile entities
that would never do anything anyways.

Then by reducing chests to 1 in 20 ticks, we cut out 95% of isLoaded checks and findPlayer
calls on chests, and 100% of the checks for Signs, the 2 most popular Tile Entities.

This cuts out a massive amount of checks revolving around TileEntity ticking.
Servers with large amounts of TileEntities should see significant improvement.

Finally, this then spreads out the ticking of reduced-rate TileEntities so that they
do not all tick on the same tick, distributing the load of some TileEntities like Chest.