Lots of changes for type instantiation and concrete syntax

This commit adds the following: 1) nonterminals are now subtypes of
Tree; 2) parameterized types with reified types now match correctly; 3)
productions are added to the fcvEnv, so their names are now visible,
including qualified versions of these names; 4) productions are now
supported along with functions and constructors in call or tree
expressions; 5) productions are now supported along with constructors in
call or tree patterns; 6) fields of non-terminals are now checked in
field type computations, meaning field lookup and assignment should now
work. I have initially tested this on a number of modules and it seems
to work, but this definitely needs further testing with more concrete
syntax scenarios.