Only process signals created by an operation after execution is complete

Delaying signal emitting until after the operation completes ensures the operation cannot be accidentally interrupted by an external consumer of an event.

In addition dear reviewer, subscriber exceptions when emitting queued signals are now caught and simply logged (rather than rethrown). **This is a behavioural change from master.** The assumption here is that consumers of signals should NOT cause the processing of an operation to fail (e.g., if a UI binding goes bad).

# Local testing performed
* checked text editing, selection & undo/redo work in src-localeditor.html
* ensured document still loads in src viewer