initial support for NameTypes, including field lookup in named structs

Add a NameType class. A NameType refers to its underlying type, but also
to its "canonical" type. This is currently only quickly get the "final"
underlying type in a chain of NameTypes, see Type::getAs<>. (In clang,
canonical types are used to check for type identitiy, but since named
types in Go are real types and not just aliases, it won't be needed for
this in gong.)

Add ASTContext::getNameType() to return NameTypes for NameTypeDecls.

Compile isSugared() / desugar() and getUnqualifiedDesugaredType().

Also uncomment all unused types from TypeNodes.def.