Make Kitten.Kind.{Effect,Row,Scalar} a DataKind

This helps enforce type safety and makes it clearer what the
type parameter of Kitten.Type.Type means.
Distinguish type var by kind in 'ToText Type'

For example, a unification error may now show:

    t675? = (r676 -> r677 + e678)

instead of the confusing:

    t675? = (t676 -> t677 + t678)
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 limitations of CompileError.