FindInstallableFiles throws a BadMetadataKraken instead of returning empty.

This closes #93.

NB @AlexanderDzhoganov, we have another exception to watch for when
installing.
Refacted ModuleInstaller.Install() to use FindInstallableFiles()

Actually, it now uses `InstallModule()`, which does the work.

Notable changes in this:

- Install() can throw exceptions again.
- We move InstallComponent() towards being deprecated
- We cry over still needing bundles.
- Closes #93

Sample output:

```
About to install...

 * DogeCoinFlag 1.03

Continue? [Y/N]

DogeCoinFlag:

Bad metadata detected for module DogeCoinFlag 1.03
No files found in GameData/DogeCoinFlag to install!
```
Migrated RegistryVersionNotSupported to a Kraken.
Registry documentation.
Moved all registry related files into their own directory.

- AvailableModule.cs
- InstalledModule.cs
- RegistryManager.cs
- Registry.cs

No changes except for the rename.
Registry: Documentation tweak, tweaked one if -> else if.
Added Registry.Installed(), which returns all installed mods.

Includes both real mods, and DLLs.
Does not yet return virtual packages
Registry.Installed() now returns provided modules as well.

This also adds a new `ProvidesVersion` class to facilitate this.

Includes tests for ProvidesVersion.
Registry.InstalledVersion now reports provided modules.

New internal Provides() method helps us find these.
Don't register DLLs which are part of an installed mod.

The solution I've got walks through all installed mods every time
we find a DLL, making it O(N^2). That would be terrible, but DLL
scans are so rare, and the number of mods we have is so small, that
I'm considering it perfectly acceptable until someone complains
about the speed.

Chances are we may completely remove support for pre-CKAN DLLs
in the future, anyway.

Closes #141 after the user does a `ckan scan`.
Merge branch '93_install_paths' into 179_file_locking

* 93_install_paths:
  Refacted ModuleInstaller.Install() to use FindInstallableFiles()
  FindInstallableFiles throws a BadMetadataKraken instead of returning empty.
Merge branch '141_dll_trouble' into 179_file_locking

* 141_dll_trouble:
  Don't register DLLs which are part of an installed mod.
  Registry.InstalledVersion now reports provided modules.
  Registry.Installed() now returns provided modules as well.
  Added Registry.Installed(), which returns all installed mods.
  Registry: Documentation tweak, tweaked one if -> else if.
  Moved all registry related files into their own directory.
  Registry documentation.
  Migrated RegistryVersionNotSupported to a Kraken.

Conflicts:
	CKAN/CKAN/Types/Kraken.cs
Wrap many disposable resources in `using` blocks.

Hopefully this will provide some relief to #179.
(I won't say it closes it, but it would be nice if it does!)
Merge pull request #180 from pjf/179_file_locking

Wrap many disposable resources in `using` blocks.