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
* checked split screen editing still updates and sends edits.
Any reason to collect whole function objects instead of the data (eventid, args) only? Both works for sure, but I was surprised to see this. Just curious to learn what the motivation for this decision was.