Adding my changes to the minimalModules test. With default initialization,
these tests would not work otherwise.
This adds the compiler generation of the defaultOf for externs, and removes
the previous handling of externs from functionResolution.
Adds compiler functionality for a module-defined _defaultOf function for each
type.

Summary of changes:
buildDefaultFunctions - generates the _defaultOf function for record types.
  Inserts accesses to the type's type and param fields such that these can be
  grabbed in function resolution and sent to the correct constructor.  Default
  initializes the remaining fields unless the constructor has a default
  expression in its function header.

callDestructors - In changeRetToArgAndClone, instead of only alterring the first
  use of the old return symbol, alter all the uses to copy the updated value of
  the return parameter into the old return symbol before actions happen to its
  remaining uses.

functionResolution - Replace the varying actions to types depending on flags,
  defaultValues, etc, with calls to the _defaultOf method of that type (which
  should do the varying actions for it).  Except distributions, which require
  a little more functionality to utilize a _defaultOf function.  Distributions
  can't generate a _defaultOf method in the module code because our construction
  via type aliases (new <alias>()) does not work when the alias was not created
  in a straight-forward way, and buildDefaultFunctions can't generate a
  _defaultOf method because it doesn't have enough type information to insert
  the proper calls.
Adds the _defaultOf generation for tuples.

Not all type information or substitutions for tuples are known by the time
buildDefaultFunctions comes around, but it needs to have a _defaultOf method
around to instantiate by the time functionResolution rolls in for generic
instantiation.  So create a stub in the former and fill in the body in the
latter.
Add the _defaultOf function for booleans
Add _defaultOf for inits, reals, and imags.
Add _defaultOf method for enums.
_defaultOf method for strings and c_strings
_defaultOf for complexes.  Additionally, modify the _cast function which assigns
to a complex given a tuple of values to not default initialize itself.  This
prevents some infinite recursion, and additionally saves time, as it wasn't
necessary to initialize the return variable when its values were just going to
get overwritten in the next lines.
_defaultOf for classes just returns nil cast to the class type.
Various types whose default values were compiler inserted but defined in the
linked runtime code and thus capable of being referenced from the modules
Insert a comment with what the _defaultOf method for distributions would look
like, if we were able to use type aliases in the manner shown.  When that change
occurs, this method can be uncommented and the corresponding code in function
resolution removed.
_defaultOf for memory_orders and the _defaultOf definition that will catch
everything else.
Remove the PRIM_INIT in a type constructor for ref type's fields.  I did a
valgrind check over the known ref tests and didn't see anything unusual.
Merge branch 'master' into defaultInitClean

Pulling the _enum_first change back in to be sure everything works.
Adding some minor tests that you can override the _defaultOf function and the
results are what you would expect.
Record and class simple example redefinition of _defaultOf.
Slightly complicated record _defaultOf redefinitions.
Factor lookup() into two versions: one recurses through module Uses and the other does not.

Pulling apart the two versions allowed significant simplification of the version that does
not recurse through uses.  Further code consolidation is possible, by making the helper
routines return (or merely populate) a vector of symbols and pushing the error-reporting
logic into the driver routine.
Simplify lookup helper by pushing symbol selection into the top-level lookup() routine.

This factors the common decision and error-reporting logic out of the duplicate routines.
Simply gathering up a vector of symbols also simplifies the overall logic.
Error reporting now lists all duplicate symbols before aborting. (TODO: we may need to
provide file/line or other context.)