[Bleeding] Repair missing diff in Explosion. Fixes BUKKIT-5662

The blast protection enchantment dampers explosions, however
the functionality was only added to block explosions, and not
entity explosions.
[Bleeding] Implement new damage api. Fixes BUKKIT-5326, BUKKIT-3878.

This commit centralizes event handling to where damage is actually applied
to the entity to avoid bugs that have resulted from nodamageticks,
modifications to damage after the event has been called, and similar
mishaps. This also implements new API for getting and setting of
modifications made to the damage amount actually applied to the entity.
This is done by storing the change in the damage amount as each modifier
is applied by vanilla code.

The method that actually damages the armor worn by an entity has been
relocated beneath the event called as to not apply durability loss when
the event has been cancelled.
[Bleeding] Set projectile source for reflected fireballs. Fixes BUKKIT-5661
POM Changes
mc-dev imports
Skeleton API Implementations
Obfuscation Helpers
Spigot Configuration
Better Chunk Tick Selection
Crop Growth Rates
More Efficient Chunk Save Queue
Merge tweaks and configuration

This allows the merging of Experience orbs, as well as the configuration of the merge radius of items. Additionally it refactors the merge algorithm to be a better experience for players.
LongHash Tweaks
Async Operation Catching

Catch and throw an exception when a potentially unsafe operation occurs on a thread other than the main server thread.
View Distance

This commit allows the user to select per world view distances, and view distances below 3. Be wary of the issues selecting a view distance of 1 or 2 may cause!
Compressed Nibble Arrays

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
Improved Timings System

Tracks nearly every point of minecraft internals and plugin events to give a good quick overview on what is causing TPS loss.
Fix Mob Spawning Relative to View Distance
Handle Null Tile Entities
Entity Activation Range

This feature gives 3 new configurable ranges that if an entity of the matching type is outside of this radius of any player, will tick at 5% of its normal rate.

This will drastically cut down on tick timings for entities that are not in range of a user to actually be "used".
This change can have dramatic impact on gameplay if configured too low. Balance according to your servers desired gameplay.