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.
Update CraftBukkit to Minecraft 1.7.10
Put damage modifiers in Functions for event. Fixes BUKKIT-5681
Handle uniform block ids greater than 127. Fixes BUKKIT-5686
Provide modifier functions to EntityDamageEvent. Fixes BUKKIT-5688
Don't confuse client with sound coordinates outside view distance.
Add IDispenseBehavior for diff visibility
Add the getSlot method to BlockDispenseEvent. Adds BUKKIT-5142

The BlockDispenseEvent is missing a method to get the slot that an item
was dispensed from. Without this commit, there is no way to find out
which slot an item was dispensed from, preventing exact rollbacks of
changes to a dispenser. This commit fixes the issue by adding the
getSlot method to the BlockDispenseEvent. It also modifies the
constructor of BlockDispenseEvent to add the parameter 'slot', and
passes it in in existing code.