init

ping @ocramius @Bakura10 WDYT

Use case:
For example if you have a forum, you might want to have different restrictions for different boards and even topics.
This module allows you to do that, and to have several chainable assertions.
A rule for boards could be:
Board A: Must be logged in and have 100 posts
Board B: Must be logged in and have 100 replies
Board C: Must be logged in and have 100 posts and 200 replies.

Now you would create 3 assertions, loggedInAssertion, postsAsserts and repliesAssertion.
In the database you would add an entry with the assertion name, the type(this case would be 'board') and type_id(this case would be the id of the board) and a value.
We've added a "group" too, which will group the assertions together, so if you want to say A + B OR C + D All you would have to do is give A and B the same group id and C and D the same group id.
weird - is there any way to avoid the setter call?