[Finishes #71191972, 70488748] Step mode fixes

The easiest way to follow these changes might be to look at each commit in turn.

Summary:
(1) Turtle was only using the log from ExecutionInfo, so I instead had it use it's own log array making Maze the only app using ExecutionInfo.
(2) Previously each item in executionInfo.log was an action represented by a list in form [command, blockId].  Now each item represents a step, where each step can contain multiple actions.  Each action is an object in the form { command: "foo", id: x}.  This means we can now have steps that consist of multiple actions (i.e. a turn and move).
(3) Added unit tests
(4) Have INFINITE_LOOP_TRAP in codegen only concern itself with looking for infinite loops.  Added LOOP_HIGHLIGHT to concern itself with making sure the loop block gets highlighted.  There's still some ugliness here (see next point).
(5) Have for loops get their loop blocks highlighted/stepped through by setting blockly core's infinite loop trap to be a loop highlight.  I'm going to open a pivotal item to clean this up and make it more clear.