Framework api

Don't merge this request yet! It depends on the PR for nunit-console being ready as well.

This branch is for modifying and putting the finishing touches on the framework API, which is called by the engine. See https://github.com/nunit/dev/wiki/Framework-Api for design details.

I'd like to use this and the related console PR to do design review of the interfaces we are exposing to allow programs (including our own) to discover and execute tests. These interfaces form an api, which we will not want to change lightly after it is published. So it would be nice to get it right, or as right as we can, anyway. Therefore, please review the entirety of the files, not just the changes I made. It should be reviewed in conjunction with the nunit-console PR of the same name.

The first two commits make the following changes to the original API:

1. Rather than an <error> element, we return a non-runnable <test-suite> when trying to load a non-existent file or one that's not a .NET assembly. This will show as red in the gui and the console will need to detect it and produce an error message.

2. We no longer automatically do a Load when Explore is called. This makes it consistent with Run.

3. Rather than inline constants, we now use constants declared in DriverSettings.cs, which will be used by the engine as well.