Refactor NUnitLite so it can execute tests using a GUI main loop

There are several patches here:

1) All test methods, including setup and teardown, are exceuted on
the main loop

2) Setup and Teardown methods can now be 'async' methods

3) The harness supports using await within a Test method in order
to have asynchronous tests which need to do tasks and then invoke
code back on the main loop.

4) The test runner is built into GuiUnit.dll. Users reference this
binary in order to write their tests but it is also the executable
used to run the tests.

5) GuiUnit has built in support for Xwt/Xwt.Gtk and MonoMac. It's
trivial to add support for regular Gtk, Wpf, or whatever else we
might require.

6) The NUnit2 style xml output had to be slightly patched in order
to provide full type names in more places. Previously it was impossible
to tell what namespace a test class was from.

7) We always set cwd to be the directory containg the test assembly
before invoke a Setup/Teardown/Test method. This gives a consistent
cwd which can be relied upon.