Clean up the definition of the TC monad a little.

- Use a newtype over the monad transformer stack.
- Define a set of primitives that use the "TC" constructor
  and implement the type checker using these.
- Now we could split the monad out into a separate module.1
Remove unused language pragmas.