Transitions permissions moved to has_state

 * New macro allow_transition added
 * Methods like allow_xxx? can be defined for greater flexibility
 * Streamlined Ability