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.

Unrelated to this PR, we should test if this `session.Refresh()` is still necessary. I added it because I was running into weird issues and htought this might fix it, but I'm pretty sure it ended up not fixing it, so we should stop doing it - my guess is that it adds a lot of overhead from re-initiating the connection for every op