New Multi-Touch MouseTracker

Fixes/Addresses #29, #59, #357 

[Try a Live Demo Here](http://msalsbery.github.io/openseadragontester/index.html)

Added support for the [WC3 Pointer Events Spec](http://www.w3.org/TR/pointerevents/) used by IE10+/Windows 8+, and also under development for Firefox.

Multi-Touch enabled. Now supports multiple simultaneous pointing devices and multiple touch points.

Added a pinchHandler callback to MouseTracker and corresponding pinch zoom handling in Viewer. Pinch gestures are now handled without mimicking scroll wheel events.

Added a dragEndHandler callback to MouseTracker and corresponding kinetic panning for touch device input in Viewer.

Added real-time velocity (speed and direction) tracking to drag-related gestures. The values are included in the event parameters of the corresponding MouseTracker event callbacks. Currently used for kinetic panning (flick gesture) on touch devices. Can be used to detect a swipe gesture as well.

## Known Issues

I've left IE8 related code commented out. Are we going to support this still? For MouseTracker it's not a huge problem except for mouse capture. I'll work it in there if we want to keep supporting it.

I haven't implemented and tested MouseTracker stopHandler functionality. On what pointer devices to we want that implemented? Just the mouse? Touch? And if touch, on single touches, multiple touches?

As discussed at #352, Viewport.applyConstraints() combined with kinetic panning can cause an undesirable bounce effect with an image zoomed out smaller than the viewer window and a fast flick gesture. applyConstraints() is working by design - you can get the same effect with the mouse in the current release. I'm working right now on making this a better experience on touch devices, but if it requires any changes to applyConstraints(), I would prefer that to be a new issue as it's outside the scope of this patch (if there's no objections). I'm hoping to have a suitable fix without going into that, most likely before this patch lands.

For unit tests, there's no way currently to simulate real touch events or the new pointer event model. The way mousetracker.js is coded, all the DOM events, regardless of event model, get abstracted to a common internal format then processed through the same code, so the existing tests still do a pretty good job testing this new code. I needed a way to force the tests to run using the legacy mouse event model (so it works on all browsers), so I added an OpenSeadragon plugin called *legacy.mouse.shim.js* to the test page. This plugin simply overrides the detected pointer event model and forces the old mouse event model to be used.