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**
Now, if for one reason or another we didn't find a target up there, use `Crafty.map.search` to consult the collision engine for possible targets.