[RFC] Track origins of types for better error reporting

'Origin' now replaces 'Location' in the constructors of
'Type a'.

TODO

* Deduplicate type hints of nested types ('[Char (input to
  baq)] (input to baq)').

* Type hints for builtins (especially 'if', etc. and '@').

* type-error-3 is slightly confusing ('x's type is 'Char'???).

* Unit tests?