The dyninst exit hook runs too late for us to still call anything in the
mutatee, so the systemtap_module_exit() call which should run all of the
end/error probes wasn't happening.
Now we use a destructor function in the mutatee, so our exit path always
runs after main() returns or after an exit() call. Functions like
_exit() are still problematic though.
This now also makes a distinction between initializing process-local vs.
session resources, so we are more ready for operating with multiple
mutatees at once. See dyninst/runtime.h for design comments.