Significant changes where we keep our own list of _targetTouches so that these are always accurate to the .target set on the gesture recognizer since touchmove and touchend event handlers are registered on the window object and thus event.targetTouches won't be accurate.

We also expose the .numberOfTouches property on all gesture recognizers, which represents the number of target touches. Using this information, the developer can now query the location of touches using the .locationInElement([element]) and .locationOfTouchInElement(touchIndex[, element]) methods.

We also generally correctly handle multiple touches now and make no assumption on the first touch being the accurate one.

Finally, we reduce the amount of time we track gestures to identify velocity to just 100ms.