Implement undo.

Fixes #16