[New] Implemented Command.undo() for all commands

This lead to the ElementMaps returning replaced elements when calling
update() or updateAll().

Further now the StrolchTransaction has methods to check the state easier
than comparing with the TransactionState enum
[New] Implemented StrolchTransaction.addCommand(), Command.undo()

Commands are now supposed to be added to the StrolchTransaction so that
when a TX is committed, the commands are first verified and then
Command.doCommand() is called.

But most important of all, in case of an exception, Command.undo() is
called so that each Command can properly undo its changes so that also
in memory changes are rolled back.