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|
Using '}' as separator would allow merging excludedNamespacesObj and excludedNodesObj which might improve performance.
The current code is fine and will not lead to clashes, so there is no need to change it.