fixup! Delay signalling of enabled state changes until the op batch is
complete
Enabled direct text styling only if current selection is a text range

Prevents the controller advertising things such as bold and underline
are valid operations for an inline image (they are not!).
Avoid enabling remove hyperlink button if hyperlinks feature is disabled
fixup! Avoid enabling remove hyperlink button if hyperlinks feature is disabled
Add a batched signal subscription interface on EditorSession

The UI often only needs to update once per redraw for many signals. Make
this common use easy for consumers by exposing a way to have a particular
signal emitted only once per redraw.

Fixes #610
fixup! Add a batched signal subscription interface on EditorSession

Revert previous batched signal interface
Add event subscription tracking object to simplify per-frame subscriptions

A common use-case for UI components is to only update the UI state just
before the next frame is rendered, irrespective of how many times a
signal is fired within a given batch of operations.

The event subscriptions object allows these to be easily created and
tracked, and also makes it easier to ensure all subscriptions are cleaned
up at the end.