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.

Could just make the channel buffered and then this doesn't need to happen in a goroutine?