custom gesture

These changes make the updates described in issue #2.  Changes allow
consumers of library to create their own gestures and register them with
the controller, without modifying the library code.