Changed source dependency resolution to match only tags, rather than all references such as branches, when selecting a version. This removes the accidental support for declaring a dependency on a branch, pending an actual implementation.
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).