Insist all files are downloaded before we can .Install them.

Since .Install is a private method, if this is not the case it means
we've got something broken *inside* ModuleInstaller.
Nicer looking `ckan list`. See compatible, upgradable, etc.
Added ModuleInstaller.AddRemove and ModuleInstaller.Upgrade

This make upgrades *much* easier.

- AddRemove needs to download files.
- CmdLine upgrade now uses these
- Everything needs tests.
Merge remote-tracking branch 'origin/master' into 160_upgrades

* origin/master:
  Fix OSX changes in build.lean
  Added WTFPL to human readable spec.
  Update CKAN.schema
  Style fixes
  Fix links not working
  Add About dialog
  error dialog proper size on linux
  hopefully this fixes the error dialog crash on linux
  Allow resizing of mod list columns
  handle InconsistentKraken on mod installs
  removed parenthesis around titlebar ckan version
  "Installing mods" tab now properly renamed according to the current action
  small fixes
  small oversight
  gui redesign part 2
  KSP_VERSION_MIN does not require KSP_VERSION_MAX
  Added OSX condition to @CP
  Actually *use* our download hints when downloading files.
  Added a `ckan repair registry` command.
  Registry exposes repair/reindex functionality
Upgrades can now take a version number.

Which really means that installs should be able to take a verison
number, too.

This starts to implement an `ICommand` interface for the cmdline.

Changes to core:

- Added Registry.GetModuleByVersion
- Added AvailableModule.ByVersion
Added DownoadModules() to ModuleInstaller

Which is great, except only our upgrade method calls it, so our
architecture here sucks. Everything should be calling it.
Merge remote-tracking branch 'origin/master' into 160_upgrades

* origin/master:
  Updated Spec to include v1.2 GameData paths.
  Removed warnings from the compiler abour our test cases.
  Spec copyediting for v1.2 and Gamedata/Paths
  Fix GameData/.. bug
  Test: GameData/.. should not be allowed.
  Tests that we handle KSP v1.0.0 correctly.
  Allow KSP versions to miss their leading zeros.
  Makes the checks more rational
  Adds subfolders to human-readable spec
  Passes all tests related to installation
  Additional tests for GH #315.
  Tests for extended GameData installs.
  Tests: Slight refactor ModuleInstaller tests. Added Bad target test.
  Allows GameData subdirs
Merge remote-tracking branch 'origin/master' into 160_upgrades

* origin/master:
  Fixed incorrect download speed bug
  Refresh now issues a re-scan
  popup error message on exceptions
  fixed tab lock during install
  Implemented 'install suggestions' dialog
  GUI fixes
Merge pull request #455 from KSP-CKAN/160_upgrades

Provide `ckan upgrade` functionality.
Revert "NetKAN now has 'cachefile' option"
Merge pull request #465 from KSP-CKAN/revert-457-master

Revert "NetKAN now has 'cachefile' option"
Fixes #460
not quite
Merge pull request #467 from AlexanderDzhoganov/460_argument_out_of_range

Fix: ArgumentOutOfRangeException if you don't properly select a KSP install dir