Declarative Authentication DSL inspired by Ryan Bates excellent cancan library