Improve IE11 touch support

While working on #2820 I found that sometimes our e.touches emulation for (MS)Pointer events would sometimes get out of sync.

I've corrected this, now e.touches is tracked perfectly (in my testing).

I've also changed the (MS)Pointer DoubleTap handler to use this tracking rather than its own, so it doesn't need to add events to documentElement all the time.

Fixes #2820

@nkovacs Please test, this should fix the performance issues, I haven't had a proper chance to test them, gotta run!
These three functions don't seem to need closures, so it's probably better to define them outside of the `_addPointerStart` function.