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
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. :)
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.
ModuleInstaller.UninstallList now throws a ModNotInstalledKraken

Also, writing kraken documentation is the best. ;)

Part of #313.
`ckan remove`: better message if the mod wasn't there to start with.
cmdline: Better messages when upgrading not-installed mods.

Closes #313.
Merge remote-tracking branch 'origin/release-v1.0' into 313_pre_exists

* origin/release-v1.0:
  CmdLine: No longer spam the user with file removes
  Force a GameData scan after installing mods.
  NetAsyncDownloader: Throw MissingCertificateKraken on missing certs.
  Cmdline: Fix typo: "Manage KSP insatlls".
  No longer query the user during transactions.
  Disable experimental features iff we're on a stable branch.
  Links to file testing instead of validator in bin
  Adds a "adding a mod" to contributions
  Updates readme with links to the User guide

Conflicts:
	CKAN/CKAN/ModuleInstaller.cs
	CKAN/CKAN/Types/Kraken.cs
Fixes for review comments on #313.

- End anchor added.
- Renamed KSP.ToRelative and ToAbsolute

Ran a `ckan scan --verbose`, watched the regex match with its shiny new
anchor just fine. :)
Merge pull request #336 from pjf/313_pre_exists

Fewer ugly messages when removing/upgrading non-existent mods.