Make DSL Rule objects never instantiated and move the validation code to the RuleCompiler