DebugRunner, for debugging

DebugRunner inserts a pause step in between every step. This step
calls a specified function and pauses until that function returns.
This allows the caller to debug step sequences by inspecting the
step, state, and so on.