drops everything - a new game, a floor transition, anywhere undoing across the boundary makes no sense
Records state as the new current point - the normal "a turn was taken" case. Any
redo history beyond the current point is discarded, the same rule undo/redo everywhere
follows: taking a new turn after undoing invalidates whatever future it undid away from.
steps forward one state and returns it; null when already at the newest state
steps back one state and returns it; null when already at the oldest retained state
the state at the current point, or null before anything has ever been pushed