[OPTIQ-346] Add commutative join rule

CommutativeJoinRule is currently disabled.  Specifying "-Doptiq.enable.join.commute=true" enables CommutativeJoinRule and disables MergeProjectRule; the two together caused a planning-time explosion.

Tweak cost of joins, so that the left input contributes more to the cost than the right input (L log L vs. R). This reflects the cost of populating a hash table with the LHS. All else being equal, a join is more efficient if the smaller input is placed on the left.

Remove EnumerableJoinRel.getRows(), which was computing join row count assuming a many-to-one join. Fair enough, but it did not recognize that joining to a filtered dimension table reduces the row count of the fact-dimension join.

Fix display of a plan's provenance when one of the rule operands was a RelSubset.

Enable writing tests that provide arguments to EXPLAIN PLAN.