Improve filtering of touch and mouse events.

When filtering touch events, two different touch points may be received in
two different events. This could cause the map to flicker when it
interpreted the events has having the same touch point. Solution is to
check state and id of touch points in the event.

When filtering events, either don't use the event, return true and receive
the event again the normal way, or use the event but return false so the
child can use it also. This should prevent using the same event twice.

In order to support both mouse and touch (by internal touch synthesizing)
we must record whether we receive touch events and only accept mouse
events if we don't.

Change-Id: I90e557b13e23db71d5179f52055965ee23067d36
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>