ToDistributedBatch allows to convert a batch physical plan to distributed batch plan, by
insert exchange node, with an optional required order and distributed.
Try to enforce the locality requirement on the given columns.
If a better plan can be found, return the better plan.
If no better plan can be found, and locality backfill is enabled, wrap the plan
with LogicalLocalityProvider.
Otherwise, return the plan as is.