Some more detailed tests for interleaved pauses and runs

Also, assert some invariants (don't pause while paused, don't run while
running).  Our code should never do this, but we should make sure it's an error
if we try to put the system in a weird state.