gestures: lock a direction when doing gestures
Currently, gestures can just 'halt' and stop updating if the delta becomes a different direction, which is unnatural to users. Instead, lock onto a direction when we can detect one and always update gestures for the locked direction.