Swipe event: Trigger only one event per mouse sequence and let it bubble

The element to which a mousedown handler is attached by the swipe setup() code
takes ownership of the next swipe event. This means that, if the same mousedown
event triggers other swipe setup() -attached mousedown handlers as it bubbles,
the subsequent ones will bail. Thus, if a swipe event results from the mousedown
then such a swipe event will be triggered on the deepest element with an
attached swipe handler, and it will be allowed to bubble from there. This
provides the tools that developers can use to avoid scenarios such as the one
mentioned in the referenced issue.

Fixes gh-6262
Swipe event: Track mouse handlers and remove only the ones tracked
Unit tests: Add bubble-checking for swipe
Unit tests: Make swipe tests run in Chrome as well as phantomjs
Swipe event: Use $.data() to store context
Unit tests: Make sure swipe cleans up its event handlers and only those