Changes to repartition

The repartition command now uses a different execution model that is optimized for coalescing after big filter steps. It may not be as efficient for other use cases. This change also allows repartition to increase the number of partitions.

Repartition now uses shuffles. The old model is available with the shuffle optional argument.