Return counts for collection update and remove commands

In order to support optimistic locking the counts from the MongoDB
update and remove commands need to be returned to the application code
so that the update/remove can be verified they took place and action
taken if they did not (like throwing a 409 Error).

For consistency make LocalCollection return counts also.
Merge remote-tracking branch 'meteor/devel' into return-counts-for-update-remove
Return values of server update/remove queries to user.

Thanks to @jacott. Minimongo implementations to come.
version 0 of optimistic upsert simulation
upsert supports modify and multi

doesn't actually retry 3 times yet (needs to determine when to)
strategy comment
Merge branch 'return-counts-for-update-remove' of github.com:jacott/meteor into jacott-return-counts-for-update-remove

Conflicts:
	packages/minimongo/minimongo.js
	packages/mongo-livedata/mongo_driver.js
Merge branch 'jacott-return-counts-for-update-remove' into mongo-upsert

Conflicts:
	packages/mongo-livedata/collection.js
Return { numberAffected: x } from updates and removes.
Don't allow clients to call update methods as upserts.

Add test for it. This is a way to avoid the complexity of allow/deny rules for
upserts; for now, if you want to do an upsert, do it in a method.
Implement upsert in minimongo.

i.e. delete the code where we throw an exception if you try to upsert.
Actually implement minimongo upsert.

Got a little over-confident there...
Support  in minimongo
Run upsert tests for minimongo collections
fix tests
run minimongo upsert tests on client (has errors)
don't swallow exceptions on LocalCollection write

We provide an error-logging callback for async writes without a callback.  However, writes to LocalCollections are not necessarily async, so we shouldn't provide a callback.
$setOnInsert in minimongo
Implement Collection.upsert().

Basically the same code as Collection.update(... { upsert: true }) except that
it returns an object with numberAffected and insertedId keys. remove() is back
to returning just the number affected, not an object, so that both update() and
remove() match the mongo api.

Untested.
Account for undefined options