Lift GMachine into Stage monad transformer and add ability to print constructor names and unsaturated globals

Instructions:
    * Added LParen, RParen, and Space for adding punctuation to output. This
      will go away once Char is a builtin type and we have instructions to
      put them on the stack.

GMachine:
    * Encode state transitions using StateT
    * Add new component gmCons which is just a list of constructor names sorted
      in tag order so that if we have (NConstructor tag arity), then
      (gmCons state) !! tag -> Constructor name
    * Implement LParen, RParen, and Space instructions
    * Print "<function>" if main = some unsaturated global
    * Garbage collection is turned off until I can figure out a better way to
      represent heap in GMState

Format:
    * Don't automatically space-separate output in gmOutput anymore

Transforms & GCompiler:
    * Pass tag-sorted list of constructor names from transform and add it to
      initial machine state in compile
Expose Mode data type in Inference.hs