[Finishes #74059246] Finish step before allowing next step

Attempt to make maze animation/stepping code a little clearer while also making sure we disable the step button while we're animating a step.  I'm not entirely convinced I made the code clearer, so do let me know if/what is still confusing.

Important scenarios I've tested:
(1) Solution with infinite loop (we still animate correctly with stepSpeed 0).
(2) Standard solution success/failure
(3) Step mode success/failure and can't step before finishing last step.
What does a step with multiple actions look like? Would it have a .command attribute or is it a tuple?