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

This is for #512.

It should return an object that contains the output of `rawHtml()` and perhaps the selection.
How do you feel about having the `selectionRange` defined, but `null` in the case that `rangeCount` is 0?