Reworked block registration system

Used reflection to create new block instances. This was done to prevent
disabled block from trying to take block IDs without doing a if
statement per block declaration. As well to make it a bit easier all
around to work with the system.