Code Cleanup and New Map type

I spent a lot of time cleaning up the SnakeMap code. There's still more
to do, but it is getting cleaner. This addresses issue #1
I also added the beginnings of a new type of map. I'm calling it
HallwayMap.