Clean up robot state transitions

Use an enum for the robot state instead of multiple booleans, and ensure
we always update the state of the go/reset button when the robot state
changes.

Also perform the next robot step in the animation complete function,
rather than using a separate timeout.  This is probably more reliable.
Disable step button when finished
Reset robot if a command is selected