GestureButtonView: a touch and directional swipe handling subclass of KeyButtonView (AOSP)

This class is an extension of KeyButtonView the touch handling view for the software navigation keys in
 Android.  It uses a custom gesture listener I've written that accepts short left/right, long left/right,
press, double press, long press, and upwards swipe with sloppy touch handling on each side.  It can take
two KeyButtonInfo classes serialized from string-arrays for a completely customizable gesture-based
experience.  GestureButtonView can either replace a single button, multiple buttons, or stretch the entire
length of the navigation bar.

The nested gesture listening class is a universal example of touch and directional swipe handling that can have many applications.