Target default world when returning from The End; Fixes BUKKIT-3494

Due to the having to generate new logic to avoid using the customized
PlayerConnection.moveToWorld, entities returning from The End were not
properly calculating their exit target.  This commit corrects that
logic.
Make command blocks only select players on its world. Fixes BUKKIT-3515
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
Add OldChunkLoader from mc-dev for diff visibility
Fix mcRegion-to-Anvil conversion
Update pom with Spigot specific info.
Update versioning check to correctly resolve api version.
Optimize packet used to unload chunks for the client

At the moment telling a client to unload a chunk involves calling the entire chunk from memory, deflating it and then sending it through the pipes even though the client ignores it and based on the bitmap simply unloads the chunk, and to add the cherry on top, this is done on the main server thread.
Skip entity.move() if we are not moving anywhere.
Alternate, sync-free-but-safe chunk reference cache
Add Custom Timings to various points