Move extra classes our of Map.h

Also add some explanatory comments. Wrench, you may need to correct my
misinterpretations.