Normalize declared type.

This might make for less than ideal error messages. Maybe we should do
normalization later, but I don't know how.
Fix two cases where we returned nonnormalized types from type checking.

We used to copy declared types for arguments verbatim to the
environment, even when they were not in normal form. When we get them
out we break the invariant of only having normalized types.

Perhaps it would be better to do normalization when getting types out
of the environment, or directly where we need it, I have no clue.
Make TermStructure derive Show (mainly for debugging purposes).
Prettier error message when encountering unexpected nonequal types during typechecking.
Further improve error messages.