Bug fix for edge case: If you call event.stopPropagation() on pointerup it would result in the follow press event from not triggering.
Call `event.preventDefault()` on `touchstart`. This fixes issues in ipads. While the click event is prevented, we ensure a click is triggered from the `touchend` event.
Outlined work to be done. We need to clone the event object when dispatching press and presshold events, calling preventDefault on these should do nothing, however preventClick should prevent the click from happening. Requires a little investigation of how to properly clone the event object.
Also reset the `isDefaultPrevented`, this does not however actually undo the call to the originalEvent.preventDefault() which is exactly what we want.
Cleaned up comments for consistency and understanding.
Changed the way we fix the iOS issue. Rather than calling preventDefault on touchstart, which results in scrolling being disabled, we implement our own version of the 300ms delay on touchend to ignore all mouse events in that time and to ensure a click event is fired at the end of the 300ms - whether by the browser or by pointy.
Linter fixes.
Touchcancel was not clearing _touching lock. Rewrite unit tests for better clarity and more thorough testing of both mouse and touch events.
Revise a comment in unit tests.
Removed teardown option, always perform the teardown check.
Test pointer event properties for expect values as well, pointerType and buttons property more thoroughly currently.
Typo. 8*2=16, not 18.