Fix PositionIteration bug when first position is a rejected text node
Migrate expensive tracked changes container check into node filter

Moving this check into a node filter ensures it is only required once
per node, rather than once per node-position.

This results in a modest 30% improvement in position iteration speed.
Cache frequently accessed global vars
Move another per-node check out of TextPositionFilter

This particular check can become expensive on a document that contains
a large embedded blob (e.g., inside an office:binary element).

This results in a 50% improvement in position iteration speed.
Correct IE detection code for containsNode workaround

Though a tiny code change, this appears to grant a further 20% speed
improvement for position iteration.