Add shard size allocation balance function

This function attempts to balance shards of similar size across the cluster.
"Similar size" in this case means log(shard_a) == log(shard_b).