Refactored code and fixed edge cases.

This is a followup to #520. validateArgument arguments were switched in
order so that it is possible to write Match.Where condition function
without parenthesis. Moreover, in set-role-for-group and
set-role-for-person there should still be check.