Merged code from #4 with changes:
* moved compile-time validation into IValidateContractUsageAttribute;
* reduced validation aggressiveness (now raises a warning and ignores invalid annotations, instead of raising errors);
* standardized name of new attribute.