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.