kill intermittent by making runOp log bounds happen after bookkeeping

Things using expect_runOp could run into trouble when saving db state
and shutting down because the expect_runOp would log at least one turn
of the event loop before the op state would be updated.  So after
restoring the op could appear non-finalized when it in fact was finalized.

This change shouldn't actually impact any correctness anywhere; only the
test infrastructure is able to observe when logs happen.  However, it
does mean that the console.log output for when an op finishes will be more
useful since it will show what the state of the op was when it finished.
(This has been annoying when looking at logs.)
test coverage for the mozContacts API

Regrettably since we're using a fake mozContacts impl, this also required
an update to our shim which means if the real API becomes nicer, we won't
catch the regression.