Merge branch '175_relationship_resolver' into unofficial_release

* 175_relationship_resolver:
  Fix RelationshipResolver to examine provides as well.
Privatise the internals of Registry.

- Better assurances other classes can't mess with our registry.
- Discovered `registry_version` wasn't used at all.
Privatise InstalledModule and InstalledModuleFile fields.

This was a surprising amount of work. It doesn't even fix
the bug I'm trying to hunt down, but it gets us closer.
Newly installed mods now record relative paths in registry.

However we still need the complete file-list in the registry
to do this, *and* we need for remove to be able to understand
relative paths.
Added KSPPathUtils.ToRelative

- Includes tests.
Added KSPPathUtils.ToAbsolute
Rearranged KSP.cs to make it easier to read and navigate

- Added #regions
- Condensed properties
- Added comments
- Grouped similar methods together

Actual code changes:

- Some methods are more private than they were before.
- We throw a `NotKSPDirKraken` where we used to throw a
  `BadVersionException` before.
- `BadVersionExceptions` were never processed by anything, and have been
  removed.
Commented on some things we should do in the registry.

No code changes, comments only.
Added `ToRelative` and `ToAbsolute` to KSP.

Includes tests.
Registry now always stores files in relative format.

Fixes #177
RegisterDll now works properly using relative paths.

Needed for #177.

Also, it sucks less now. :)
Updates readme with links to the User guide
Adds a "adding a mod" to contributions
Links to file testing instead of validator in bin
Merge remote-tracking branch 'Ippo343/master' into release-v1.0

* Ippo343/master:
  Links to file testing instead of validator in bin
  Adds a "adding a mod" to contributions
  Updates readme with links to the User guide
Merge branch 'release-v1.0'

* release-v1.0:
  Links to file testing instead of validator in bin
  Adds a "adding a mod" to contributions
  Updates readme with links to the User guide
Registry.DeregisterModule now works with new relative/absolute paths.

Also much more sensible. If any files are still instlled from this mod,
we throw an exception.
Automatically detect older registry versions and upgrade.

This will also let us more cleanly handle registry upgrades in the
future, too.

This should end the relative path work for #177.
InstalledModule has regions, tidyup, fewer warnings.

No actual code changs here, but we:

- Disable a warning on a field we're recording now, but using in the
  future.
- Added regions, for easier navigation.
- Made our properties less spread-out.
Fixup ModuleInstaller to use preferred path functions.