Methods for subsequent memory leak fixes

Background
-----
This pull request represents a smaller chunk of a larger work (happening on [Plumber branch](https://github.com/Benglin/Dynamo/tree/Plumber)), making code review process more manageable. It exposes methods that will be called eventually when the full memory leak fix goes in, but for now, these new methods are not called in anyway.

Testing
-----
* The latest code changes work good in Dynamo + Revit
* Tested first launch in both Sandbox/Revit scenarios
* Tested ```Settings > Enable usability report``` menu options in both Sandbox/Revit scenarios
I'm not sure this is the right approach for destroying the internal objects, as it can cause the tread to block for a long period if it's in Heartbeat wait?

Consider using thread interrupt to ensure that we complete in a fairly short period of time?