ErrorFormat and TODO when double-uninstalling mods.

For #125.
Better exception handling around adding new installs.

In particular we have a kraken when something doesn't appear to be a KSP
directory, and the cmdline client tests for it in particular.
TODO: Less steps in cmdline for new instance setup.

For #125.
Fix verson detection and validation of KSP gamedir
Merge pull request #142 from ROMB/fix_directory_check

Fix verson detection and validation of KSP gamedir
Test framework organisation overhaul.

- CKANTests and NetKAN are root notes.
- Test classes are named after the code they exercise.
- Directory structure changed to reflect this.
- Test data now in `TestData.cs` for ease of re-use.

For #90
Added tests for IsKspDir() and test data.

Flipped IsKspDir() to internal so we can test it.

Three new data directories:

- `KSP/KSP-0.25` - A "good" install of KSP 0.25
- `KSP/bad-ksp` - A directory with no version info
- `KSP/missing-gamedata` - A 0.25 install with no GameData dir.

For #90
Populated GameData in test dir to make git happy.

Git doesn't really grok empty directories.

For #90.
Merge branch '90_test_ksp' into 125_fixups

NB: KSP.DetectVersion changed to *static*, as it uses no object data,
and this is how it's used in master.

* 90_test_ksp:
  Populated GameData in test dir to make git happy.
  Added tests for IsKspDir() and test data.
  Test framework organisation overhaul.
  Fix verson detection and validation of KSP gamedir

Conflicts:
	CKAN/CKAN/KSP.cs
	CKAN/Tests/Test.cs
Accessing .Instances always makes sure it's loaded now.

With tests! <3
Major overhaul of multi-instance KSP

- Split management of multiple instances into KSPManager
- No need to manually save or load from registry.
- Added GetPreferredInstance() as the best way to find the user's
  preferred instance, if a single preferred instance exists.
- Added PortableDir() to install portable installs.
- Decoupled transactional file transactions from KSP class.
- KSPPathConstants in their own file
- KSPPathUtils in its own file.
- Some tests, but not enough, darn it!

For #125
Not finding a gamedir when expect is no longer a fatal warning.
GUI: Check our KSP install hasn't been set on the command-line.
Provide a stack backtrace in the GUI before calling Debugger.Break()
Cmdline: Remove now obsoleted 'config' option.
RegistryManager.Instance() now always requires a path.

I'm really not so sure about this change. It means we no longer have
problems where we try to access the registry before we have a
current install, but it is a monumental pain in the ass.

Luckily, this commit should also be easily reversable.
CmdLine: Add back `--kspdir` option.

Holy smokes this works again. I have dreamed of this moment.
Module has consistent To/From Json/File methods.

- `FromJson()`
- `ToJson()`
- `FromFile()`
- `ToFile()`
ModuleInstaller: Documented inter-thread communication
ModuleInstaller: TODO: Break this into smaller pieces.