Update `QuestionMetaClass` to pass `rules` to subclasses
Refactor rule validation for `Question` objects

Move all of the `rule` logic out of the question and into a mixin, for
greater flexibility with user generated classes.