Add support for cursor-styling

Cursor styling allows the direct styling properties of the next inserted
text to be set. This means that the user can set text-related properties
(e.g., bold, underline, italic) without having an existing selection,
and the next entered character will have this formatting applied to it.

Known issues
- Undo/redo requires multiple steps. Should only be one. But, the current
undo manager design is not amenable to this type of change.
Refactored StyleHelper text queries (isBold etc.) to use a applied styles object

This improves the performance by reducing the number of times getAppliedStyles
is called (once per update, rather than once per property to check), and
paves the way for the direct cursor styling to be taken into account.
Refresh the style information cache to account for any direct cursor styling
Use text insertion event to add styling op to insert text operation group

Using the insert text operation group ensures the direct styling op is
executed immediately after the insert text operation is. In some session
queues, operations could potentially be executed much later, which would
cause the previous implementation to incorrectly append the styling op
at the end of the list, rather than after the insert text op.