include forEach polyfill stub
env includes noMouse and pointer

* noMouse is used to prevent double tracking of events where possible and is based on the premise that userAgents indicating mobile, tablet, iOS device and android will not have a mouse attached.
* pointer identifies generic pointer support. This is primarily MS products but may expand to other products.
onContact better normalizes events

This commit addresses issues with Microsoft products (IE8, Surface, etc) not handling events correctly due to incorrect event detection. It also address the github issue #204 where on some android devices, swiping fails, etc. 

Swiping would fail due to a mouse event firing first and the listener would subscribe to mouse events instead of touch events.

* Microsoft products do bat shit crazy events where touches/mouse/other events get fired in addition to pointer events. In some scenarios, mouse events are not even fired. Per the MS documentation, listen to the pointer events and life will be good…THIS IS WHY WE CAN'T HAVE NICE THINGS
* If a mouse is not supported, don't listen to mouse events. Save the resources and prevent listening on mouse events that are fired in addition to touch events.
* Otherwise, just listen to touch and mouse events regardless to support interfaces that use both touch and mouse handlers

TODO: I plan on starting to create automated tests around this stuff