implemented multitouch

This PR implements basic multitouch functionality. The downside is it breaks intercompatibility with mouse dependent components (but they still work with Mouse ofc), although I believe this can be addressed without any hassles.

The **Touch** component enables (through **Crafty.touchDispatch**) detection of the events "TouchStart", "TouchMove", "TouchEnd" and "TouchCancel". "TouchLeave" events are treated as "TouchEnd"s. These basic events allow for implementing more complex events, like swipe, drag or (with some "juggling") pinch.

This PR does not support multitouch over the same entity. That is, if the same entity is touched by two or more fingers at the same time, only the last finger will be valid.

The changes in this PR include:
1. Refactored **Crafty.touchDispatch**;
2. **Crafty.touchDispatch** sends "TouchStart", "TouchMove", "TouchEnd" and "TouchCancel" events;
3. Added **Crafty.fingers** array, which keeps track of currently touching fingers;
4. Added **Touch** component;
5. Added **AreaMap** component, which is used by Mouse and Touch;
6. Added **Button** component, which just selects either Mouse or Touch for an entity based on device;
7. Added **Crafty.findClosestEntityByComponent**  function, which is used internally by Mouse and Touch.
8. Altered **Crafty.mouseDispatch** to use **Crafty.findClosestEntityByComponent**
We might have clicked on the "inside" part of the DOM element, so ascend the DOM tree looking for a node which Crafty has attached an id like `ent3` to.  If we find one, Crafty will treat entity as the target of the click.