Terrain generator

Added a bunch of optimizations and restructuring to the map generation. Caves are hard, so that will be a problem solved another day.
Hmm.... Why do we implement Block() if we don't want people to use it?