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
Fix TileEntities and Blocks getting out of sync. Fixes BUKKIT-3501

Also fixes: BUKKIT-3477 and BUKKIT-3488

Minecraft likes to double check that tile entities get set after they
are placed, however we didn't set tile entities until after our event
was called. This caused the world to have multiple tile entities in a
single block location; to fix this we now set tile entities before
the event.
Direct all BlockPlaceEvents to a singular location. Fixes BUKKIT-3438

By having a single function to process BlockPlacement logic, we make
it so that there is consistent behavior throughout all BlockPlace
events. This should allow for easier troubleshooting and less diffs
in source.

This also fixes BUKKIT-3463 by including the correct coordinates that
were clicked to the event.
Ignore block functions for skulls on BlockPlace. Fixes BUKKIT-3495

Skulls don't normally get block data applied to them, so we shouldn't
apply it either.
Update Fireballs to account for ExplosionPower. Fixes BUKKIT-3460