Detect whether we really should call .preventDefault() on touch events

[#58521766]

It let us use default browser gestures like pinch-zooming, panning etc.
when there are no actions attached to touch events (or they just don't
call .preventDefault()).
Always call .preventDefault() on touchend (!)

[#58521766]

To avoid browser-generated events like mousedown, mouseup and click.
Note that we already translated touchstart into mousedown and touchend
into mouseup. We don't want to trigger these events second time.

Unfortunately it also breaks double tapping gesture, but perhaps
we can't do nothing about it. FastClick breaks this gesture too.
Do not always dispatch "click" event on mouseup

[#58521766]

E.g. click can be cancelled by:
- touch move bigger than 10px - it means that user pans the viewport
  rather than tries to tap / click.
- second finger is added between touchstart and touchend -
  e.g. to do pinch-zoom.