Framework api

Don't merge this request yet. It has more work to be done in conjunction with the PR of the same name in the nunit-framework project.

In the two initial commits, the following changes are made:
* The framework driver has been modified to match changes to the framework api.
* The driver api has been simplified. It maps to the framework api.
* Functional tests of the driver api have been added.
* The engine's internal runners now support an internal interface (ITestEngineRunner) which is used to pass TestEngineResults from one level to the next and an external interface (ITestRunner) which delivers its payloads to the client using an XmlNode. 
* TestEngineResult has been simplified and is now only used internally by the engine.
* Several previously public interfaces have been made internal.

To review the Framework API design, you should look at both the FrameworkController class in the framework and the NUnitFrameworkDriver class in the engine.