Make 'Var' take 'TypeName a' instead of 'Name'

Increases type safety.
Tidy type variable numbers when reporting errors

Type variables now start at 1, and there are separate
namespaces for effects, rows, and types.

Currently, types are only tidied per error group, not
globally.  This is due to the type-unsafety of CompileError.