This ticket is to allow users to run an update that will change a document shard key value only when the document will not change shards. We should no longer throw an ImmutableField error in ModifierNode or ObjectReplaceNode unless the _id field is changed. We will error if the update is sent with multi: true, if it's sent as part of a batch with size > 1, or if it is sent without either retryWrites: true or autocommit: false.
Once this ticket is finished, we will still error if an update is sent that will cause the document to change shards.