Use new row type syntax to reduce builtin magic.
Track origins of types for better error reporting

'Origin' now replaces 'Location' in the constructors of
'Type a'.

Known issues:

* Builtin type variables don't have hints.  (Builtins do
  have hints, though.)

* type-error-3 is slightly confusing ('x's type is reported
  as 'Char').

* Hints in the 'ToText' instance of 'Type a' are verbose.