so DSOs can be unloaded in any order

This is a start to supporting dynamically loadable and unloadable DLLs.

In particular, now exception handling should work successfully across dynamical DLLs. Lots more to go.