Rework mob item dropping on death. Fixes BUKKIT-5625

After the changes in d611cff2 we started including a mob's equipment when
calling EntityDeathEvent so plugins can access this data. However, the
changes to enable this triggered a bug that makes skeletons and pig zombies
no longer drop equipment because they handle this differently than the rest.
On top of this we don't handle dropping equipment for mobs that cannot
pick up items in vanilla even though vanilla does drop equipment for them
if you summon them with it. We also do not include a horse's inventory
in the event so they drop their saddle, armor, chest, and chest contents
with no way for a plugin to control this.

To solve this issues we revert mob item dropping back to vanilla logic
and instead just capture all their drops in the method they all call to
spawn them into the world. We also move horse inventory dropping so it
happens at a time when we're capturing these drops. With these changes
all items mobs drop on death should now be included in the event and
we have less diff to worry about for future updates.
Fix ItemStack state during BlockPlaceEvent. Fixes BUKKIT-5632
Handle null targets in target event. Fixes BUKKIT-5635
Use UUIDs in CraftPlayer equals and hashCode methods. Fixes BUKKIT-5634
Some assumptions are better than others.
Improve ItemStack filtering.
Add special case for handling place event with lilies. Fixes BUKKIT-5641
Updated version to 1.7.9-R0.2 in pom.xml for Beta.
Updated version to 1.7.9-R0.3-SNAPSHOT for development towards next release.
Don't check unload queue before ticking things anymore.

In commits 71a238ee and c8591397 we added checks while ticking to ensure
we never ticked anything in a chunk meant to be unloaded. We did this to
prevent these chunks being removed from the unload queue and leaked.
However, this causes a ridiculously large number of lookups on the queue
for a somewhat rare occurance. We also now have the chunk GC which will
take care of these leaked chunks when they do happen. With this in mind
we now remove these checks which removes almost all uses of the
LongHashSet backing the unload queue.
Avoid checking for loaded chunks for lighting and entity ticking.

When a chunk is loaded the server tries to ensure it has its initial light
calculations done before sending it to the player. When ticking entities
the server tries to ensure the entity does not walk into an unloaded chunk.
To accomplish these the server checks a one chunk radius around the chunk
to be lit or a two chunk radius around the chunk the entity is in. These
lookups happen every tick even though their result is unlikely to change
that often. To reduce the cost of these checks we replace them with a
system to keep track of what neighbor chunks a chunk has loaded and update
it when chunks load or unload which is a much less frequent action. On a
server with ten players this change removes about 100,000 calls a tick to
LongObjectHashMap's containsKey method.
[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
Use compact memory format for uniform chunk section data.

Many chunk sections contain parts of their data that are the same for
every block they contain. In these cases we can save memory by saving
a single value instead of an array of 4096 copies of that value. Block light
and block data are most likely to be uniform followed closely by sky light
data. Block ids are far less likely to be uniform but give the largest
saving when they are. Because of this we use a compact format for every
part of the chunk. Memory saved from this technique will vary based on the
world but seems to be about 50% on normal Minecraft generated chunks.
[Bleeding] Ignore damage done by LivingEntity.damage(). Fixes BUKKIT-5666

This matches behavior previous to new damage event API of not throwing
events for plugin-triggered damage.
[Bleeding] Fix checks for non-living entities. Fixes BUKKIT-5667
Implement new getOnlinePlayers. Adds BUKKIt-5668
Use 4787c23dce0f5ac856d8d398225828971a93a3ff Guava patch for onlinePlayers

This change improves the quality of life for plugin developers using
iterator iteration with side-effects. In the specified Guava patch, the
internal iterator no longer relies on the AbstractList iterator which
iterates by index, and will instead wrap the provided iterator in a
transformer given the Function.
Spigot