Avoid more slow calls in StepsTranslator

Add more complex equality & lookup logic that attempts to avoid calls to
unfilteredDomOffset.

TODO
- Move & rename to PositionMemento
- Potentially expose getter on PositionIterator
- Unit tests
Correct IE detection code for containsNode workaround
Remove global references in tight loops to aid browser optimization

Global references tend to be impossible for v8 to safely inline. By
capturing a closure variable, v8 can better infer the values can't be
modified.
Use faster key iteration method
Fix PositionIterator bug when starting near rejected text nodes

TODO
- Unit tests
Improve performance by moving node filters out of the TextPositionFilter

TODO
- Unit test
- Redesign to fit in the correct area
fixup! Avoid more slow calls in StepsTranslator
Put off accessing the walker's current node as long as possible

Fetching the currentNode property on a tree walker is surprisingly slow.
Putting this off as long as possible improves the overall iteration
speed significantly.