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 usually don't start with a blank line unless my first line is a comment.  Your call, though.  :smile: