Major refactor to back track on the initial plan of having resources represented as classes. Opted instead to gain some code maintainability / easier to obtain wider feature set at the cost of allowing users to easily define bas configs (note that doing so is harmless, you just won't get very far).
We can now also define rules at both a resource and a resource attribute level.
e.g. assert that a resource has tags, but also that those tags equal a given value.