Honor constraint attribute during selection This commit makes sure that attributes from all selectors are used during selection, including the attributes from constraints. It does not, however, make sure that those attributes are consistent (compatible).
Add reason to `DependencyMetadata` This allows propagating reasons from `Dependency` to `DependencyMetadata`, which in turn can be used as `ComponentSelectionReason` descriptions. Doing this lets us display the description in the dependency insight report.
This commit, however, does **not** add support for serializing reasons, or publishing them. This means that this only works for direct dependencies so far.