Refactor mod list

Includes #495 but has been rebased onto master. 
This makes me feel a little uneasy; modules in our system essentially represent metadata documents, they don't know if they've been installed or not. It can and should be possible to have `CkanModule`s without a registry at all, and indeed `netkan.exe` is already one circumstance where this is the case.

This means we now have all these great properties that *may be wrong*, because the caller hasn't called `UpdateModFieldsViaRegistry`, and may not even know they're supposed to do that since it's not in our public facing documentation.

As it happens `IsAutodetected` will never be true, since autodetected modules should just be of the base `Module` class, and not the `CkanModule` class.

Is there any chance we can move the relevant code wholly into the `Registry` class, and then call that to query these as appropriate?