cmTarget: introduce a `UsageRequirementProperty` structure

This structure will encapsulate the behaviors of usage requirements.
There are a number of them now and they all behave very similarly, so
try to reduce the code duplication as much as possible.
1 file changed