DO NOT MERGE: 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.
The ```usage report window``` hidden behind other windows actually happened before a few times, but it is hard to reproduce. If Dynamo launch sequence is as follow, then this will happen:

1. Click on ```Dynamo``` on Revit ```Add-Ins``` button
2. Make Revit lose its focus to, say, full screen ```Window ABC```, before Dynamo window shows up
3. If this is the first run, then usage report window shows up behind the ```Window ABC```
4. Dynamo window appears to be frozen, and usage report window doesn't show up on task bar
5. User will not discover this 'hidden window' unless he/she does the ```ALT+TAB```

This problem becomes more apparent with development, if a breakpoint brings the focus off Revit and back into Visual Studio before the usage report shows up. Since I'm developing in this area and it becomes obvious, so I took this chance to fix it (and add to the overall code changes you have to review, sorry).