Apply rules by leaf RelSet -> root RelSet order. For every RelNode in a RelSet, rule is matched and applied sequentially. No RuleQueue and DeferringRuleCall is needed anymore. This will make space pruning and rule mutual exclusivity check possible.
Rule that use AbstractConverter as operand is an exception, to keep backward compatibility, this kind of rule still needs top-down apply.
This should be done after