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.
Can you fix this as clang-format suggests? I know it was wrong before you got here and I wouldn't care if the constructor at line 2155 didn't have 4 space indentation. So might as well make them consistent while we're here.