Zone.drag() keep original offset when using limits

Fixes #119

This also fixes hSwipe() and vSwipe() as they use drag() internally

The limits are respected per axis, and so the Zone will drag on that
axis only when the touch is within the limits on that axis, in local
coordinates