Support sharded DuplicateKey exceptions

JAVA-1103
I can't replicate updating an object in a sharded collection that would force a duplicate key exception.  You can't change `_id`, you can't change a shard key and unique indexes aren't enforced on shards.