Changed configuration selection during dependency resolution so that when the consumer defines some attributes the matching falls back to the `default` configuration only when the target component has no configurations with attributes attached. Otherwise, the `default` configuration is treated the same way as all other configurations and treated as a candidate only when it has attributes attached. Previously, the `default` configuration was used when there were no _matching_ configurations with attributes attached in the target component.
The behaviour is unchanged when the consumer or target component do not define any attributes or the `default` configuration is explicitly selected.
Improved the 'no matching variant' and 'too many matching variant' error messages to use a better description of each of the variants, such as which project/module and configuration the variant belongs to. Made a bunch of changes to forward the display name of the variant from where the variant originates from through to the variant selection logic so it can construct the error messages, using `Describable` to represent the display name.