refactor(commandstack): seperate commandstack from undo feature

the commandstack is an important internal feature which is independent
from the undo functionality itself (which just triggers stack operations)
this makes the undo feature also more configurable in the future