Added some support for dynamic version selectors to source dependency resolution. This change duplicates the logic that implements the same feature for binary dependencies. This duplicate implementation is incomplete and behaves differently to the implementation for binary dependencies. This is intended to be a place holder and a later change will move the source dependency resolver to a location where both source and binary dependency resolution can share the same implementation of the selection logic (plus a bunch of other missing capabilities).
Moved a couple of version control interfaces out of the public API and into internal API. These were not reachable from any other public API and we're not planning to make the VCS integration extensible at this point (certainly something we want to do in the future I think, once source dependencies work well with Git).