Fix memory leak in nunit (DynamoCoreTest)

This pull request tries to fix memory leak in ``DynamoCoreTest``. 

There are two major issues. 
  * ``DynamoModel`` calls ``Dispatcher.CurrentDispatcher.BeginInvoke()``. Unfortunately, in nunit the action will never get a chance to be called (Google [WPF+Dispatcher+Nunit](https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=WPF+dispatcher+nunit) will get a lot of solution about how to run ``BeginInvoke`` in Nunit, but as this action is just logging workspace loading time, it can be skipped). As the dispatcher is from nunit test running thread, this static object will never be garbage collected until all test cases run, the corresponding ``DynamoModel`` will not be released. 

  * The other issue is, as ``DynamoView`` is not created in ``DynamoCoreTest``, if some tests create some nodes, ``DynamoViewModel.PerformShutdownSequence()`` will fail in the middle when asking for saving workspace therefore the shutdown is incomplete. So ``RequestUserSaveWorkflow`` event handler is registered in ``DynamoViewModelUnitTests``.

Test result: peak memory usage in ``DynamoCoreTest`` from many GB to 400+ MB after all test cases. 

@Benglin please review :-)
While this is a good change, it might fail some tests. I remember some derived test classes would prefer to delete these themselves instead of waiting till this point. If a derived version of ```Cleanup``` destroys ```ViewModel``` before it gets here, then we will have a null pointer. Try recorded tests and see if you have problem with these, chances are it is not noticeable by outside world because of the ```try-catch``` block (at times I do think we have excessive ```try-catch``` in our codes).

Although I don't think will fail hard, just keep an eye out of the test results today.