Larger checkin of more substantial cleanup on path towards serious
compilation-speed optimization.  This checkin seems to speed up some
tests substantially on its own, but the real purpose is cleaning
the code to set it up for the planned larger-impact optimization.

Changes included here:
o Make use of free variable sets from a term use the proper ones
  from within the Properties, and not the one that includes free
  vars from subterms that is on the Term directly.
o Fully remove the variablePropertyFreeVars() function and all uses
  of it, both in crs and in c.
o Several different bug fixes to pass the correct kind of free variable
  hashsets in the correct places.
o Remove final traces of code using free variable hashsets from the
  property lists, although there is still some code that puts them there.
o bufferCopy now passes the free variables in from the old term,
  as appropriate
o Several places that re-calculated free variables and left them on the
  property lists now put them separately on the Term.
o Slightly less use of the wrong type name being used when it just happens
  to be compatible with the real type that is being passed.
o Added macro ASSERT_VARIABLE_PROPERTIES to more concicely allow debug
  checks that either both or neither of the variable properties and the
  variable free vars are set.  The check was already there in one place
  and the macro should be used there as well.