New undo stack for peek_move, so it doesn't have to make a copy each time
Finished with apply/rollback semantics; fixed bugs so test suite passes