refs #279

SERVER-340 Created a $setOnInsert update operator.

Conflicts:

	src/mongo/db/ops/update_internal.cpp
refs #279

SERVER-340 $setOnInsert should be a no-op in an update.

Conflicts:

	src/mongo/db/ops/update.cpp
	src/mongo/db/ops/update_internal.cpp
refs #279

Manually port over a test for $setOnInsert
refs #279

SERVER-8640 Fixed $setOnInsert over a field created by the query portion of an upsert.
refs #279

SERVER-8640 Took $setOnInsert test out of the sharding passthrough suite.

Conflicts:

	jstests/slowNightly/sharding_passthrough.js
refs #279

SERVER-8680 $setOnInsert should not create an empty parent object when it should be a no op