Fail when no compatible variant can be selected for a component. Continue to ignore components with no compatible variant when using an `ArtifactView` with additional attributes defined, whose implicit contract is to ignore these (this should be an explicit contract). Made some changes to error messages so that failure to select a variant shows the same useful details as a failure to select a configuration.
Changed attribute matching to chain the producer's rules after the consumer's rules, rather than stopping at the end of the consumer's rules. This allows the consumer to reuse the producer's rules but override certain decisions, and it allows the producer to add new values for an attribute that the consumer knows about which are compatible with the consumer value.