Do not require a version for required capabilities Whenever a dependency "requires" a capability, use a lenient parser so that we don't have to provide a version number: the version is currently not used.
Add validation step for multiple variant selection This commit adds a graph validation step, which checks that if multiple variants of a single component are selected, they have compatible attributes.
Currently, compatible means _identical_. If we want to improve this further, next steps would be to do this during selection instead of validation, and potentially substitute one selected variant with the other when one is fully compatible with the other (in other words, all its common attributes are compatible with the other variant). This, however, would likely have a performance impact in selection.