implemented undo/redo for clear-env and reset-env
with-undo now creates the undo-fun before executing the body, but stacks
it afterwards, enabling it to undo env-clear (otherwise the undo-fun would
be stacked, but then the stack would be cleared)
stack-for-undo and stack-for-redo now return nil, prefenting implementation leakage