Entity Tracking with Vehicles fix

If an entity untracks from a player while a vehicle/passenger, the rider can become frozen
and stop receiving updates correctly.

This patch makes it so passengers track the same way as their vehicle.
Protect from tile entity crash
Inventory Meta API
EntityTasks API

Allows scheduling repeating task timers on an entity level.
Avoids Bukkit system so that tasks will simply maintain themselves on entity removal.
Entity AI / Attributes API

This gives us control over some Entity AIe
Also API for Attributes
This will be expanded as future needs.
Entity Serialization

Allow serializing an Entity to raw NBT, and to get an Entity object without spawning it into the world.
Prevent crash from stack overflow in doPhysics
Invalidate Metadata on reload

Metadata is not meant to persist reload as things break badly with non primitive types
This will invalidate metadata on reload so it does not crash everything if a plugin uses it.
Teleport passenger/vehicle with player

Will teleport entities with a player for vehicle/passenger
Implemented LeadKnot. Adds BUKKIT-4570
MonsterEggSpawn Event

Get the itemstack used to spawn an entity
Call EntityDeathEvent when Creeper explodes. Fixes BUKKIT-1812
Return the Horse for HorseInventory.getHolder(). Fixes BUKKIT-4466
restrict spawn in memory to view distance
Improvements to Player lookup - Resolves BUKKIT-4608

Many sections of code does player lookups by iterating every online player
and doing name comparisons. This is very ineffecient and can reduce performance
on servers with high player count.

By using a map based approach for most player lookups, player lookup
performance should scale better with increased amount of players.

This commit also corrects a loose lookup on adding and removing ops by
using getPlayerExact instead, as adding and removing ops is not a loose
match operation.