Use deepcopy for rollbacks

Too many actions are "altering" now and only the Delete had a working
rollback implementation. I tested the memory consumption and each small
tree is about 30 KB, so it's acceptable.
Limit history size to 1000 items
Ignore undone actions when checking for changes