When sharding a non-empty collection that is associated with tags, we should create one chunk on the primary shard and let the balancer handle splitting and moving the chunks which is what we do for non-empty collections not associated with tags.
In order to do this, we should remove this assertion and instead call `InitialSplitPolicy::calculateHashedSplitPointsForEmptyCollection` if `tags.empty`. We should pass `isEmpty` into `shardCollection()`, `InitialSplitPolicy::createFirstChunks`, and `InitialSplitPolicy::generateShardCollectionInitialZonedChunks` so that we can later check whether or not the collection is empty. In `generateShardCollectionInitialZonedChunks`, if `isEmpty` is false, we should just create one chunk by calling `appendChunk(nss, keyPattern.globalMin(), keyPattern.globalMax(), &version, validAfter, allShardIds, &chunks)` and not doing any of this.
To test this, we should enable the balancer in our ShardingTest and then insert into some unsharded collection and create a few zones associated with this collection. We should then call shardCollection and assert that only one chunk exists after. We should then wait some time for the balancer to run and then assert that the chunks were correctly split and moved.