Use the free variables in the named properties from the term instead of the
ones on the list.  Another small step towards the optimization to the list.
Skip free vars while doing deep-equal.
Get free variables from the term in this case too.
Another place of using the free variables from the term instead of from the
property list.
Also add two TODO comments for old issues with reference counting in the
code that should be revisited.
Use the buffer's free vars instead of the free vars on the buffer's
property list.
Move the four fields on a Construction that deal with the Properties into
a struct devoted to the Properties.
Use the named free variables in the term's properties rather than the
free variables in the list of the term's properties.
(Refactoring towards optimization.)
Eliminate namedPropertyFreeVars function, and stop adding the free vars onto
the named property list at the begining of bufferStart since no one needs
them there anymore.
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.
Fix bug - use the correct free variable set
T-Local-String now keeps a reference to term until string goes out of
scope.
Merge branch 'develop' of https://github.com/crsx/crsx into develop
T-Local-String now keeps a reference to term until string goes out of
scope.
Remove property link's u.weakening field now that it is no longer used, and
add a new u.propset field, with plans for it to store a hashtable of
properties.

A number of pieces of infrastructure are added to make this work, but we
never actually use the new type of link yet.  If we add that soon, we might
need to fix pieces of the infrastructure.  For now, everything still works
and all tests pass.
ALLOCATE_NamedPropertyLink assigns the name of the property.
This is one more step towards cleaning the code and adding the optimization.
ALLOCATE_NamedPropertyLink assigns the term that the property maps to.
This is one more step towards cleaning the code and adding the optimization.
Make cproperty, c_namedProperty, c_variableProperty all return Term (which
is struct _Term * and thus already a pointer) instead of Term* which was
really a waste.  This removes a number of macros that were re-converting
back to the Term, and even speeds us up.
o Use hashtable for named property list group-links rather than co-located
  regular named property links.
o Property lookup modified for named properties to deal with hashsets when
  present.
o makeHS2 now gets passed in an optional function to unlink entries when
  they are removed from the hashset.  It is stored and threaded around.
o freeLL2 gets an optional unlink function to use to unlink freed entries.
  (for use by HS2 using the LL2)
o Pair keys are now const, and the string versions are now const char *.
  That had to change in a number of places.
o Minor bug fix in fprintPropsHS2
o debugPropsHS2 added to easily debug dump a named property list in gdb.
whitespace cleanup: remove only 4 lines with tabs in crsx.[ch]
Add basic memory management infrastructure (LINK/UNLINK) for struct _Properties.