Preparing dub select command. dub select will select the currently used versions and write them to a file, so that dub can later use this information to rebuild this exact state. This will also be used to override dependencies with either branch versions or not matching versions (to resolve conflicts). (All of this if to be implemented).

Other changes:
- Added Version.UNKNOWN, which could be later used for undetermined package versions instead of ~master.
- Added Dependency to/fromJson.
- Added Dependency alias "*" for ">=0.0.0".