feat(protocol-ctrl): next step after other plugins
feat(protocol-ctrl): next step after other plugins

Prior to this commit, once the last plugin on which the protocol
controller was waiting reported that the current step was complete, the
protocol controller automatically proceeded with the next step action
(e.g., run the next step in the protocol, stop the protocol, etc.).
However, this meant that, for example, an `on_step_run` signal was emitted
for the next step before plugins had a chance to handle the last
`on_step_complete` signal from the previous step.

In this commit, schedule the execution of next action (e.g., run next
step, stop the protocol, etc.) in a future iteration of GTK main loop to
allow other plugins to execute `on_step_complete` handlers first.

wheeler-microfluidics/microdrop