This simplifies the ways we work with replacements.
Instead of monkey-patching the original replace functionality we
* create the business object / target object
* pass it to replace
A simple way that works well with our existing infrastructure.
Other changes:
* fixes redo / undo issues.
* splits context-pad + replace
Closes#180