Split up the game map logic and game types into separate files

This also fixes #48.
Reexports are quite common, and in this case I think that the user of the `GameMap` module can expect `GameMap` being exported.