This role will call the validate method at the appropriate time.
validate receives the same arguments as apply, and is expected to die if
any of the parameters for the transition are invalid.
Technically, this role doesnt do much more than adding syntactic sugar for
before apply. However, its value is in the convention that you can call
validate without applying the body. This eases writing side effect free
introspection of transitions.