Avoid early deletion of defaultDist.
Avoid early deletion of defaultDist.

Some domains may depend upon defaultDist remaining alive to the end of the program.  The
order in which globals are destroyed in chpl__autoDestroyGlobals() does not guarantee that
all dependents of defaultDist are destroyed before defaultDist itself.

This is a workaround to prevent early deletion of defaultDist until that web of
dependencies can be analyzed and the contents of chpl_autoDestroyGlobals() generated in an
order that satisfies those dependencies.

In addition, defaultDist is reference counted, so it means that some code is arguably
"breaking the rules" by storing a reference to the contents of defaultDist without bumping
the distribution reference count.  It may be that this special case can be handled in that
way.  In the more general case, however, we need to ensure that objects are destroyed in
the reverse of the order in which they are created.  The way that chpl__autoDestroyGlobals
is generated by the compiler right now does not guarantee that.

hildeth/chapel,hildeth/chapel,hildeth/chapel,hildeth/chapel,hildeth/chapel,hildeth/chapel,hildeth/chapel