Factor camera navigation into parts for easier override

This isn't ready to merge, but I wanted to open this to conversation... @eric79 @BrettASwift 

Currently what I have done is made helper functions for the both mouse and WASD navigation handlers which rely on changes in X/Y/etc instead of mouse events or keypresses. Apps should then be able to override these helper functions for navmodes beyond the default set.
I like this idea a lot.  I think maybe all of the section inside the `if ( deltaX || deltaY )` conditional could be factored out into its own function so that the app developer could decide for themselves (for example) what combination of mouse buttons and navmodes mean that they are in *orbit* or *look* mode or whatever.  Then maybe the outside shell of a function that is left should change its name and move back to the private function area.  The inner piece could then be `handleMouseNavigation` and could have the necessary parameters passed in.