[Bugfix] in the _do function

- a copy of the historic value must be assigned instead of the object itself
  otherwise undoing or reverting to a historic step and starting with new edits
  from there will have the effect that the historic value on the stack from
  where we have restarted will always be changed the latest value.

- added test