[CALCITE-447] Change semi-join rules to make use of factories