Refactor RuleEngine and Rule,
remove ValueIterator and make Rule responsible for its values