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

This also fixes #48.
should we export this type if don't define it? Do you know any haskell conventions about it?