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 might suggest putting a line break in the middle of the parameter list so it doesn't cross the 100 character soft limit.  There is another place below where I have the same suggestion.