MAJOR improvements to LogBlock's accuracy

I am done working on this for now. Feel free to merge unless you see something which needs corrected. Also I would like to note that while it may be true that the falling block logging isn't working properly when it overwrites something this new falling block system works with rollback and redo (formerly there was nothing it was only done for block place). In addition, I fixed several issues with how attached blocks were logged by using MaterialData to see if they are indeed attached to the block. Updates to the list of blocks and new list have also been added to support newer blocks and improve code maintainability.

The best part about this change is it isn't just for normal block destruction. Fire for example is now far better logged, for example, LogBlock can now pick up on sand that started falling after a block burned, and any blocks that were broken off the walls (Excluding Hangings).