Add API to control scaled health. Adds BUKKIT-4590

This commit implements the ability to set the scale of hearts that the
client renders.  When the Packet44UpdateAttributes packet is sent, the
max health attribute is replaced with a scaled version, to preserve the
scaled health illusion clientside.

In order to accurately display the scaled health for players, a true
health is stored within CraftPlayer, and the datawatcher now stores the
scaled health. The getHealth() method for players still returns their
true health.

Changed setHealth() within EntityLiving to appropriately handle health
for instances of EntityPlayer. Inlined a call to
setHealth(getMaxHealth()) within the EntityLiving constructor to work
around CraftEntity instantiation.

Additionally fixes the health values sent when eating food within
FoodMetaData and ItemFood, which previously sent the unscaled health;
this commit alters them to send the properly scaled health.

Additionally fixes BUKKIT-4535, BUKKIT-4536, and BUKKIT-4127
Check interactable items before event. Fixes BUKKIT-4576

Items that cause entities to change state, including tags, chest, and
leashes, do not update the client properly following the firing of
PlayerInteractEntityEvent. This change makes the item checks occur
before the event fires, to concur with the client's assumptions.
Fix CraftBukkit diffs
Store owning Horse in horse inventory. Fixes BUKKIT-4586
Restore CraftBukkit diff in ItemDye. Fixes BUKKIT-4493

Change ItemDye to pass the EntityHuman for StructureGrowEvent again.
Store item attributes. Addresses BUKKIT-4523
Fix NBT token for attribute names. Addresses BUKKIT-4483
Revert "Correct vehicle movement issues." Fixes BUKKIT-4565

This reverts commit 3d906d134417cfeefe7f71b916fee4d105e7650f.

Conflicts:
	src/main/java/net/minecraft/server/EntityTrackerEntry.java
Restore diff missed in 4176258a836062b22ac46919aefa5cc36fae78f2
Add raw sound string playSound method. Adds BUKKIT-2443

A method has been added to Player which allows the server to send a sound string to the client. Assuming the client has the specified sound, it will be played. This is needed by the implementation of the /playsound command.
Add PathfinderGoalPanic for diff visibility.
Add timeout for Panic goal. Fixes BUKKIT-4531
Revert to 1.5 despawning behaviour for Ocelots and Wolves. Fixes BUKKIT-4449
Indicate help is a command. Fixes BUKKIT-4642
Ignore null sound by contract. Fixes BUKKIT-4641
Add EntityLeash and ItemLeash for diff visibility
Implement Leash API. Adds BUKKIT-4459, BUKKIT-4583
Update players when coming into view of vehicle. Fixes BUKKIT-4628

When only considering trackers from player perspective, attach entity
packet could be sent before a packet for a respective vehicle is in view
and will, in turn, be ignored.

This adds another notification when the vehicle comes into view to cover
all cases.
Fix mistranslation in isPlayerCreated() for IronGolems. Fixes BUKKIT-4543
Fix off by 1 error for spawn protection. Fixes BUKKIT-4154