Refactor mod list

Includes #495 but has been rebased onto master. 
Given that four existing functions in *Registry.cs* with the same optional parameter my initial thoughts would be would to inject it in the constructor. However I don't know the lifetime of the registry - with the serialising going on would the version be constant? 
The reason that I feel that it would be wrong to just supply the version in the call site is that, by my current understanding, the only way the GUI can get it is via the global.  

Basically I don't have enough knowledge of the *ckan.dll* to know how best refactor it.