Rework insertGlobalAutoDestroyCalls() to call destructors in the reverse of initialization order.
Rework insertGlobalAutoDestroyCalls() to call destructors in the reverse of initialization order.

The destructors for module-level variables should be run in the reverse of initialization
order.  I copied the traversal code from resolveUses() into addAutoDestroyCallsForModule()
so modules are visited in the exact same order.  Calls to autoDestroy are inserted at the
head of the autoDestroyGlobals function, so they are reached in the reverse of
initialization order.

33 regressions > 7 run-time > 1 non-leak

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