Do things in series rather than parallel in undoable deletion logic.

The use of `async.forEach()` in the deletion logic in particular seems
suspect, since it means that appends to the undo record will be happening
simultaneously, which makes it very likely for a mongoose versioning
conflict to occur. Hopefully this should fix #248.
make a test a bit more robust if/when it fails