FIX: wait for the run permit at the top of _run loop
FIX: wait for the run permit at the top of _run loop

This fixes a race condition in the tests when we have a plan with
explicit 'pause' messages as the first message were we have:

 - start _run
 - process Msg, (set interrupted to True, revoke the run permit, clear
   the blocking event)
 - enter _resume_task
 - set interrupted to False, set the run permit, clear the blocking event
 - wait on the blocking event to get set

The last step effectively un-does the work of the second step without
returning control to the caller as it should (effectively ignoring the
`pause`!).

The new logic is

 - revoke _run_permit
 - start _run (which the first thing it does is wait on the
   _run_permit)
 - clear the blocking event
 - schedule the _run_premit to be set
 - may process pause here which sets the blocking event
 - wait on the blocking event
 - or may process pause here which sets the blocking event

We are safe in either case for the order of starting to wait on the
blocking event and processing the pause message to clear it.

ericdill/bluesky,ericdill/bluesky