Return the valid max value for piston direction. Fixes BUKKIT-2191

By returning the following value (7) we remove the need to special
case pistons in any way (other than the original purpose of this
check, which is to ensure pistons have valid data)
Reload ban files when reloading the server. Adds BUKKIT-3470
Compensate for allow-nether/allow-end as false; Fixes BUKKIT-3466

When either of those settings are false, the worlds are not loaded and
therefore will not be targeted for portal exits.  Existing worlds are
iterated directly to avoid defaulting to the first world if a direct
dimension match is not found.

Plugins must also specify exit from custom Bukkit worlds to comply with
original commit: https://github.com/Bukkit/CraftBukkit/commit/2dc2af0

This commit introduces a constant to clarify the dependency on the
CraftBukkit implementation of custom worlds having a dimension offset.
Call BlockPlaceEvent for skulls the same as other blocks. BUKKIT-3406

When the skull BlockPlaceEvent was added it was made so the event
would be called after all the data has been set, however this is a
behavior change that is inconsistent with other BlockPlaceEvents.
Instead, if people wish to get the block data they should schedule
a task.

Relates to: BUKKIT-3438
Properly calculate level cost for books. Fixes BUKKIT-3410
Preserve source block in mushroom spread event. Fixes BUKKIT-3354
Add BlockCocoa for diff visibility.
Call BlockGrowEvent for Cocoa plants. Fixes BUKKIT-2525
Spigot changes.
Update Maven Shade Plugin to version 2.0. Fixes BUKKIT-3213
Address BUKKIT-3286 by firing the inventory close event when a secondary container is closed due to the player entity being destroyed. This covers all edge cases such as server stop / player kick / player quit.
Update item merge logic
Include NibbleArray from mc-dev for diff visibility
Implement 'lightening' of NibbleArrays - only allocate buffers when non-trivial value Saving from 40-45% of memory use by chunk section data.

Finish up NibbleArray lightening work - use for Snapshots, reduce copies

Fix nibble handling with NBT - arrays aren't copied by NBTByteArray
Return LOHS to full operation.
Update timeout time to new default value.
Per world view distance.
Fix various crop growth modifier formula issues
Fix mob-spawn-radius setting so that its actually used...
Add OldChunkLoader from mc-dev for diff visibility