Added `_shards` header to all write responses.

The header indicates to how many shard copies (primary and replicas shards) a write was supposed to go to, to how many shard copies to write succeeded and potentially captures shard failures if writing into a replica shard fails.

For async writes it also includes the number of shards a write is still pending.
I'm a bit worried about the differences in the total count (based on shardIt.size()) and the amount of calls we actually make (based on numberOfShardInstace). We may end up in a situation where successful > total and maybe worse successful == total but they mean different shards. I think we should not base the counts in ReplicationState on the ShardIt but rather on the total of actual work + unassigned.