Implement API for mob despawn when away from players. Adds BUKKIT-2986

As of 1.4 mobs have a flag to determine if they despawn when away from a
player or not. Unfortunately animals still use their own system to prevent
despawning instead of making use of this flag. This change modifies them
to use the new system (defaults to true) and to add API for plugins to adjust
this.
Fire EntityFormBlockEvent for FallingBlocks. Adds BUKKIT-3078
Ensure animals don't despawn due to old default setting.

The old default for the persistent flag on mobs was false which was then
written out to their NBT data when they were saved. We now use this data
for all mobs, not just non-animal mobs. However, this means animals that
spawned before that change will now start despawning like monsters do.

To avoid this we add a new flag to the mob's saved data to mark if the
data was saved before or after we started using it and ignore it if it
was before.
Allow placing blocks in spawn if ops.txt is empty. Fixes BUKKIT-3004
Add a custom shutdown message set in bukkit.yml. Addresses BUKKIT-3031
Persistence isn't just animals. Fix BUKKIT-3105

Also set to this value if the persistence hasn't been updated
Don't run command blocks in empty worlds. Fixes BUKKIT-3094
Refactor all OBC, libs, and NMS into versioned packages.

org.bukkit.craftbukkit and net.minecraft.server will now include the
minecraft version in the package name. As the internal implementations
are known to change dramatically, this refactor reduces the strain on
support requests due to version mismatching.

org.bukkit.craftbukkit.libs will also have version numbers for each
imported set of packages. These are not dictated by the minecraft
version number. This is done to prevent future incompatibilities.
Not enough testing went into this, you can't have packages start with numbers.
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