Refactor and test

This pull requests refactors the RTF Runner class to make it more testable. It also reduces redundant logic between the GUI and the Console applications for RTF by moving logic that is similar in both applications into the Runner itself. Runner's public methods are now reduced to the following:

SetupTests()

This method uses a supplied assembly, category, fixture, or test data object to setup tests for running. In this phase, journal files are generated, the RTF addin is generated, and the system's addins are copied to the working directory.

RunAllTests()

This method uses the test dictionary created during the setup phase to run all tests.

Refresh()

This method is used when the runner is required to clear its collections and re-read assembly data from a new assembly.

Cleanup()

This method is called when testing is complete and journal and addin files need to be removed.

Tests are added and a mock of IAssemblyData is used to test various setup cases.

@Randy-Ma PTAL

My idea is keep this and the following two in the UI part because the console application is not use these messages to create anything right now. The xml result file is created by the Revit plugin which is not modified later by these handlers. But it might be also helpful if you write some information to the console, e.g., when a test case times out, a message is written to the console saying "test case ... times out". I am leaving this to you to make the decision.