Added a supertype for the various resolution results.
Started to split up DependencyToComponentResolver so that we first select a candidate (and eventually candidates) when traversing the graph edges and later request its metadata if we need to traverse the node.
Moved dependency substitution down so that it happens as part of resolving dependency to id.
Removed DependencyToModuleVersionIdResolver and bolt DependencyGraphBuilder directly onto the dep->id and id->meta-data resolvers.
Removed moduleSource from the meta data resolve result, as its attached to the meta data now.