Cave Generation and Edge Detection

We now have a way to generate basic caves.  I'm still working on the
tunneling algorithm, it's slightly more complex.  I suggest looking at
the HillsDesert algorithm example, as I added caves to it just to mess
around.  Right now caves is good for nothing more than decoration.

Also the map now declares all edge blocks to be 'E' if they're an edge
connected to air, and 'M' if they're connected to a cave.