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