Factored out transitive dependency resolution.

This allows a dependency resolver to inject itself into the resolution process
and return data from working copies of SNAPSHOT depends instead of relying on
what was most recently installed into ~/.m2.