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.
Rework the clause in fix_def_expr() that deals with noInit semantics.

Some of the logic in that clause can be simplified, by
* observing that there is an "if ... else" controlled by (isNoInit).
* observing that this is followed by an "if ... else" controlled by (init).
* copying the second "if ... else" in its entirety at the tail of the "if" and "else"
clauses in the preceding "if ... else" statement.
* observing !isNoInit ==> !init and simplifying accordingly.

Following this, I observed that the variables typeTemp was used only in the outer "else"
clause (isNoInit == false), so I moved its declaration inside that clause.  I also copied
the declaration of initCall closer to its use in each clause.
Taking Tom's comments into account (and also fixing an error in a test .good
file, whoops!)