Updated Rule behavior logic to use Reflection
This way the rule can have several methods to test against the input.
The Reflection work is cached at rule construction, so it should be constant time regardless of CSV size