(reverse-merged from commit 8f12382e8efc8c39a919af9180dd884caf3720ff)
Implement API for wolves collar color. Adds BUKKIT-3109
Fix "Commands Only" chat flag. Fixes BUKKIT-2238

Thanks for the commit @mrapple
Add the ability to launch WitherSkulls. Fixes BUKKIT-3106
Use shooter constructor for Fireballs. Fixes BUKKIT-3121

Fixes fireballs exploding in the shooter's face and not having a shooter for the projectile. (Two birds with one stone!)
Provide a faster way to get a location. Adds BUKKIT-3120

Currently when a plugin wants to get the location of something it calls
getLocation() which returns a new Location object. In some scenarios this
can cause enough object creation/destruction churn to be a significant
overhead. For this cases we add a method that updates a provided Location
object so there is no object creation done. This allows well written code
to work on several locations with only a single Location object getting
created.

Providing a more efficient way to set a location was also looked at but
the current solution is the fastest we can provide. You are not required
to create a new Location object every time you want to set something's
location so, with proper design, you can set locations with only a single
Location object being created.
Update entity state correctly when marked as persistent. Fixes BUKKIT-3123

When a mob is marked with the persistent flag (animal or anything with
setRemoveWhenFarAway(false)) the entire block of code for checking if they
should be despawned is skipped. However, one part of this code updates the
mob state if a player is close enough to them. It turns out this state is
used by the AI system to decide if the mob should move around randomly or
not. To stop mobs from being frozen in place we now update this state if
the persistent flag is set as well.
Correctly shoot arrows with the spawnArrow Method. Fixes BUKKIT-3116
[Bleeding] Fix NPE in getBedSpawnLocation. Fixes BUKKIT-1949
Add SlotFurnaceResult for diff visibility
Implement FurnaceExtractEvent. Adds BUKKIT-2114
Add isSolid() tests for each material
[Bleeding] Fix NPE with a null bedSpawnLocation. Fixes BUKKIT-1500
Pass null help values values as empty strings to HelpTopics

Fixes BUKKIT-2618 and BUKKIT-2561
Only display help aliases when there are aliases. Fixes BUKKIT-1621
[Bleeding] Correct getEyeHeight value. Fixes BUKKIT-3130
Add EntityEquipment API. Adds BUKKIT-3103

Adds:
- Getting/Setting equipment
- getting/setting drop rates
- getting/setting ability to pick up items
-- As an added feature, players with this flag start off with a canceled PlayerPickupItemEvent
Missed a rename
Players should be able to pick up items by default. Fixes BUKKIT-3143

As an added feature, players defaulted to being able to not pick up items if the flag was false. However, since minecraft doesn't normally use the flag on players, the flag was always false.
Fix players not being able to pickup items due to default values.

The old flag for picking up loot was default to false, making existing players not able to pickup items. We now use this flag for Players, which gives us the problem we had in 48b46f83.

To fix this, we add an incremental flag that will be cross-examined to check if the data was saved before or after the flag level was introduced.

Addresses BUKKIT-3143