Hidden Item Meta

This adds the ability to store hidden metadata in item lore.

Simply set a line to "&&::META" and every blank line before, that line, and every line after will be hidden from view on the client.

for example, you can set &&::META on line 20, and there will not be 19 blank lines before it.
Then you can store Data on 21+

Also adds a &&::SHINY tag to send a fake enchantment aura if it does not exists.
Must be set before META
Persistent Meta API

This adds an API for getting and setting PERSISTENT Metadata
Meta data can be stored on Worlds, Entities, Chunks and at a Block level.
Meta is is provided in a simple Map/List setup and does not expose raw NBT access.
Chunk Save Reattempt

We commonly have "Stream Closed" errors on chunk saving, so this code should re-try to save the chunk in the event of failure and hopefully prevent rollbacks.
Keep certain items on death API

This adds a getItemsToKeep to PlayerDeathEvent that can be modified for what item a player should keep upon death.

This can be used for never-to-be-dropped items.
Anvil Event

Fire an event for anvil usage
ArrowHitBlock Event
Entity Spawn Events

These events fire any time an entity is added/removed to the world, so we do not
have to check multiple locations for entities being added/removed from the world.
EntityShootBowEvent consumeArrow API
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.
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 AI
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.
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
MonsterEggSpawn Event

Get the itemstack used to spawn an entity
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.

This also improves Server.getPlayer() by trying an exact match first and also
by not creating a copy of the player list.
Allow force spawns

Pass spawn reason force to not allow plugins to block
Force some cases where plugins should not be allowed to block it.
VehicleExitEvent Dismount Reason API
Disable damage scaling to chunk inhabited time