Add Haskell datatypes and command helpers

This just makes the terraforming commands a little easier to work with
in Haskell.  We can treat the commands as Haskell values, pattern match
on them and manipulate them and so forth, but because they implement
show we can easily pass them back out into the terraforming engine.