Support depending on multiple variants of the same component This commit changes the resolution engine so that it is possible to resolve multiple variants of the same component when using variant-aware dependency management.
Before, in order to have 2 dependencies on the same component but using different variants, one had to use explicit configuration dependencies. Now, with this change, it is possible to have two dependencies on the same component, but with different attributes. Those components would resolve to different variants.
Special treatment is applied when attributes are declared on constraints: in this case, we _merge_ the constraint attributes, and make sure that the edge is computed using the merged attributes. Should they be incompatible, the build would fail as before.