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.