[Fixes #12] Implementing version selection strategies, and more importantly, implementing snapshot and other variable-version resolution as part of the ArtifactManager methods to do things like retrieve artifacts. Refactored VirtualResource to be able to cope with multiple concrete resources pointing at different paths (synonyms, effectively). Implemented ability to scan all repos for best matching concrete version for a variable version, as well as retrieve best match from first repo containing a match (which is the default, and what's used in Maven, IIRC).