Refactored block placement and blockchangedelegates.

23 classes have been removed as they are no longer needed using the new
capture logic. This should help quite a bit with future MC updates.

BlockPlace Refactor

Before calling Item.interactWith, a recording flag is turned on for
setData to capture a blockstate for each block that attempts to be set.
When a block place event is cancelled, the recorded blockstate, stack
size, and metadata will revert back to the captured state.

BlockChangeDelegate Refactor

Now that we have the ability to capture blockstates through world, there
is no need to modify world gen classes with BlockChangeDelegates. Instead
it will simply capture blocks during world generation and send them
over to delegates that need them. The captured states act a bit
differently than placement captures. Instead of capturing a blockstate
before changing a block, a blockstate will be created for the block that
world gen wants to place. This will allow for a "replay" of all the
captured blockstates to send back to delegates.