Major Refactoring

Refactored everything.
- Added/edited comments where needed
- Removed unused code/classes
- Reordered functions and general structure
Only refactoring left to do is to remove the unnecessary Block class and
use Tile instead.