Add explicit row variable syntax for function types.

A function type's consumption and production may begin with a dot,
indicating that it explicitly specifies row variables. This permits
writing a type signature for the general 'compose' combinator. Explicit
row variables are outermost quantified, same as implicit ones.

Incidentally makes 'freshName' return a 'TypeName' instead of a 'Name'
for type safety.