Add initial support for Pointer Events for both mouse & touch (IE11)

Touch input on IE11 is provided using the [Pointer Events API](http://www.w3.org/TR/pointerevents/) rather than the [Touch Events API](http://www.w3.org/TR/touch-events/).

This change rewrites the `ScreenSpaceEventHandler` to wire up Pointer events (if supported).  It's going to be difficult to review these changes as a diff.  You're probably better off treating `ScreenSpaceEventHandler` as a new file.

Other changes in the class include using [the standard "wheel" event](http://www.w3.org/TR/DOM-Level-3-Events/#event-type-wheel) for mouse wheel input, if available, otherwise falling back on the legacy "mousewheel" event, or the even more legacy "DOMMouseScroll" event.

I've also rewritten the specs for this class.  Each combination of buttons and keyboard modifiers is tested by programmatically creating specs.  Because of the various browser-specific differences, the specs have more test harness code associated with them than the usual spec.  I tried to make them as readable as possible, but they are still complex.

I've tested on Chrome/FF/IE11 on both my Win7 desktop and a Win8.1 tablet.  This needs to be tested on Android tablets and iOS.  Given the mouse wheel changes, this also needs to be tested on laptops with trackpads, especially Mac.