Fix apply ops error handling

Fix issues with error handling in oplog-replay
    
We weren't actually looking at the applyOps response to see if they were
internal failures in the operation. This change fixes that and adds the
corresponding tests.
    
This includes the fix to add alwaysUpsert instead of updating partial
data.

I think this could be `assert.EqualError(t, "not found", replayTestDb.Find(bson.M{"_id": "missingUpdate"}).One(&result))`