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.