Do not enforce the components to be valid, when constructing a Depenency object from another. The Dependency will then return valid() = false, which is in fact a valid state of the object.
When conflicting dependencies where current in a project and its dependencies, dub could get into an infinite update loop.
This was because one package to be used was added to the graph, which then spawned a missing package for another dependency, because of not matching versions. These versions could then toggle forth and back.
This is now solved by aborting the dependency graph resolving process when conflicts are found. As the dependencies are resolved from the outermost to the innermost, this will propably hide some deeper conflicts, but then again show more user relevant conflicts first.
This does not resolve the question on what to do when merging ">=0.13.4" with "~master". But this can be resolved later on.
Fixes #72.