This revision improves the algorithm that processes a class's template arguments when a record inherits from the class.
Currently the algorithm copies all the template argument defaults into the new record's field list, replaces the values that were specified in the class invocation, copies the values into the resolver map, and then deletes the template arguments from the field list. This new algorithm copies the template arguments directly into the resolver map and then replaces the default values with the specified ones.
This revision relies on a previous revision that made it so field definitions can be tagged as template arguments. It paves the way for a future revision that will handle assert statements in class definitions.
This strongly assumes that Key is in the map with a non-null value. if it isn't the map, it will get inserted with a null V.
Maybe better to make this const, and use Map.find(Key) and assert that it doesn't return Map.end().