Switch RecName to Name

This reduces the duplication of code caused by adding
another type for environment indirection. However, this
does change how Name types are parsed. Identifiers corresponding
to Name types will now go through the type alias environment
at parse-time. These will immediately resolve to the actual
Name type.

This extra indirection is needed to ensure the Name type
has the necesssary metadata.

The remaining thing to do is to wire up variance refinement
for all kinds of Names.
Refine variance for all Name types
Address pull request comments