Updated spec with new KSP version numbers.

Closes #49.
Updated CKAN validation structure to support more tests.
ckan-validate: Test ksp_version is not mixed with other version fields.
Added KSP comparison and targetting code.

- Added KSPVersion class.
- Updated ksp_min, ksp_max to new schema types.
- Made all KSP versions in CKAN.Module type KSPVersion.
- Added post-deserialisation checks
- Much tests. Very Nunit. Wow.
Strong typing and strong checks of module compatibility.

User visible:
- `ckan available`: Only compatible versions of modules will be displayed to the user.
- `ckan insatll`: Only compatible versions will be installed.
- Modules are now always reported with their version number.

Internal:

- Types updated to Version and KSPVersion throughout source.
- Custom converter for Version and KSPVersion to JSON.
- Better validation of CKAN metadata
- Moar tests.
Tweaked `ckan available` to use Module.ToString()
bin/build is now built from pre-commit hook (fatten -o build build.lean)

Closes #37

Complete pre-commit hook below.

```
use 5.010;
use strict;
use warnings;
use autodie qw(:all);
use FindBin qw($Bin);
use Cwd;

chdir("$Bin/../../bin");

system("fatten --quiet -i build.lean -o build 2> ../.fatten.out");

system(qw( chmod +x build ) );

chdir("$Bin/../..");

system(qw( git --git-dir=.git add bin/build ));

exit 0;
```
Move basic types into Types/ folder.
Split project into cmdline and library. For #75.

- Renamed `CKAN` class to `Repo`, to avoid namespace confusion.
- Made ModuleNotFoundException public.
- Tweaked .gitignore for great justice.
- CKAN now compiles to a .dll, CmdLine compiles to an exe
Merge branch '37_nodep_build' into 75_dll

* 37_nodep_build:
  bin/build is now built from pre-commit hook (fatten -o build build.lean)
  Add uploading of build artifacts to S3.

Conflicts:
	.gitignore
`bin/build` now builds and repacks CmdLine to ckan.exe
Merge pull request #76 from pjf/75_dll

KSP Version checks, improved build system, stand-alone dll.