This revision adds a field kind to the RecordVal class, replacing the prefix bit in the TyAndKind member (formerly TyAndPrefix). A field can now have one of three kinds: normal, nonconcrete OK (indicated by the 'field' keyword), and template argument.
This revision prepares for the next one, where I will improve the algorithms that deal with class and multiclass template arguments.
clang-format: please reformat the code