`.getCurrentState()` & `.setSingleSelectionRange()`

This is for #512.

It should return an object that contains the output of `rawHtml()` and perhaps the selection.
That sounds reasonable