Fix partial matching of attributesThere was a problem in the algorithm when a configuration was partially matching,but one of its attributes wasn't compatible. Then it was considered a partial matchbut it shouldn't have.
Improved error messages in case of ambiguous matchsThis commit provides a better error message in the case we cannot choose between multiple configurations.It will display an error message that gives the expected values, the missing attributes, and the attributesthat were found but not requested.
Handle the case where an attribute is relevant to the consumer but not to the producerThis commit introduces the notion of "partial matches", which are allowed whenever an attributeis relevant to a consumer, but not to a producer. For example, a consumer wants to depend ona library with `flavor: 'free', buildType:'debug'` but the consumer only cares about flavors.In that case, we have a partial match. This commit changes the algorithm to take that intoaccount, and makes sure that complete matches are preferred over partial matches.
Add strongly typed variant of configuration attributes resolution integration testThis test adds a variant of the configuration attributes resolving integration test thatmakes use of strongly typed attributes instead of the basic string version. To do this,tests were extracted into a super class and both variants of the test provide the notationfor attributes.