Block Functions replacing factories

Refactored the blocks so that they have their own functions rather than
being built by a factory. It wasn't necessary to use this pattern in the
end and just added management to any update. Also fixed Load/Save in the
block factory.

Restoring the commit properly to fix repo. Fixes #5.