Improve backspace and delete behaviour to function over inline roots

Backspace and delete characters were "sticking" when encountering other
roots in the document (e.g., annotations). Improved logic uses step
iterators to improve the robustness of this calculation.

Partially fixes issue #56.
Backspace/delete over non-removable elements will still move the cursor

Under some cases the selection will have a length, but will not contain
any removable elements (e.g., the cursor is either side of an annotation
). In order to have the cursor continue to flow naturally through the
document, the position must be reset to the new destination, so it will
appear to "move" even if no content is removed.

Partially fixes issue #56.