Added objection_requires macro that takes in a list of selectors

Defining requirements as strings bears the risk of forgetting to change the string after renaming property. Defining requirements as selectors decreases risk of such problem as compiler throws an error when it does not see a matching selector defined anywhere. 

Moreover using selectors rather than strings to define requirements makes it easier for other IDEs (like AppCode) to perform refactors. 

I have one question regarding style in specs: I've noticed that most of them are missing top describe block. Usually the block is defined to describe object being tested. I understand that the purpose of specs in this project is more to test behavior of whole framework, rather than single objects and that this is the reason for such structure, correct?