Small cleanup to cursor insertion logic

Don't need to walk through each sibling to find the correct offset.
Extract TextPositionFilter into standalone class for easier tuning and testing
Extract StepsTranslator interface to allow a safe interface to start caching improvements
Cope with translating dom points outside the root node to steps

Previously, various consumers needed to be careful about only
asking for nodes inside the root node. Failure to do so resulted
in unpredictable behaviour.

To simplify the interface and improve the system robustness, this
rounding is now taken care of behind the StepsTranslator interface.
Added signals necessary to keep a caching implementation in sync with the document
Add caching for steps to DOM point conversion
Speed up translation from browser range to a WebODF range
Added TODO for steps translator
Speed up select-all codepath
Speed up text removal
WIP OdtDocument.getPositionInTextNode rewrite
StepsTranslator diagnostics
WIP Combine node & position filter