Migrate per-node checks out of TextPositionFilter

Migrate some more expensive checks performed in the TextPositionFilter that really are rejecting the whole node & it's sub-children.

In addition, correct the IE detection code to fix up the containsNode workaround activation... Oops!

**Bonus:** Found and fixed a small position iterator bug if the first text node inside an element is rejected.

# Benchmark results

|Action  |master (7741a98) | pr |
|----------|---------------------|-----|
|4. Move to document end (ctrl+end)|	675ms|	274ms|
|15. Remove characters (x100, backspace)|	1289ms|	582ms|
|19. Remove the current selection|	11232ms|	9815ms|
Namespaces are allowed to have ':' characters, e.g. urn:oasis:names:tc:opendocument:xmlns:style:1.0. The clean way to make qnames is '{' + ns + '}' + localname. That gives one extra concatenation which serves no purpose here. You could use '}' as the separator instead of ':', yet avoid the initial '{' for more robustness at no performance cost.