extracted the permissions logic into separate modules, introduced a permission_for class method to act as the switchboard and reflected these changes in the specs - base permission class is inherited from for the other user centric permissions classes - matchers moved into their own file in the spec support directory