WIP: KS2CKAN converter.

This can query the API, find a download link, download it, find the
embedded CKAN file, and read it.

Hell yes.

For #69.
Exactly as before, but now with classes! #69

- Added static version of Module.StandardName()
- Flipped some methods in ModuleInstaller to static
GUI update

- Integrated User.WriteLine and User.YesNo with the GUI
- Added configuration serialization
- Added ErrorDialog
- Added YesNoDialog
- Added status bar log
- Added repository to settings window
Changed all instances of Console.WriteLine to User.WriteLine
Added User.Error(...)
Hyperlinks in the grid now work
Added dialogs for recommended and suggested mods
Refactored a lot of code out of Main
Some more refactoring
Recommended/ suggested dialog now works properly
Some fixes in recommended dialog
Some layout changes
Fixed exception on command-line 'show' without arguments
added validation of input json against the schema

this doesn't work currently because JSON.NET doesn't support version v4
and throws on our schema
also added comments to several functions
asynchronous file downloading - "this was harder than expected" edition
proper handling of download errors, background downloading
implemented filesystem transactions
small bug fix
fixed #74 (install files in game root & saves/training), also added overwrite option for files
Refactored some of NetAsyncDownloader