View Navigation: Walk and Fly modes

Summary:
This is a replacement for the dynamic fly mode.
It behaves as the first person navigation system available
in most 3d world  games nowadays.

Shortcuts:
----------
Shift+F      - Start View Navigation operator
Ctrl+Shift+F - Stat old Navigation operator
WASD (hold)  - Move forward/backward and straft left/right
QE (hold)    - Move up and down
F            - Fly mode
R            - Walk Mode
Tab          - Alternate between Walk and Fly modes
Shift (hold) - Speed up movement
Alt (hold)   - Slow down movement
Space        - Jump (teleport when in fly mode)
T            - Teleport

User Preferences Options:
-------------------------
Navigation Mode   - fly/walk navigation systems
Mouse Sensitivity - sensitivity factor to mouse influence to look around
Teleport Duration - how long the duration last
Camera Height     - camera height to use in walk mode
Jump Height       - maximum jump speed in m/s
Move Speed        - base move speed in m/s
Boost Factor      - multiplication factor when running or going slow (1/boost)

Development Notes:
------------------
* The initial code was based on view3d_fly.c.
* The NDoF code was not touched, so it most likely is not working.
* I removed the deacelerate/accelerate code.

Pending Issues:
---------------
* The axis roll correction is disabled (it was affecting the move around code.
* Draw in the UI the shortcut options, and current values (e.g., Mode: Fly/Walk)
* We can rename Fly to Free, so Walk/Free Navigation is provided by this code, and Fly can use the old code.
* They would need to be integrated as one operator somehow (the code can be merged, but to evaluate whether it's worthy).

Reviewers: ideasman42

Differential Revision: http://developer.blender.org/D30
View Navigatino: rename fps to walk, now to change the internal variables
View Navigation: changes from review

Implemented:
* rename from fps to walk
* unifying walk and fly modes into VIEW3D_OT_navigate
* change up/down to Q/E keys
* expose gravity in the ui
* acceleration/deacceleration
* new shortcuts (MMB, ...)
* remove X/Z rolling
* teleport distance clamp to positive
* huge cleanup
* other small changes

Missing parts:
* walk->base_speed needs to be static or an operator settings
* Teleport should try to land in an offset to the hit point
* Speed could/should be relative to unit_settings.scale_length
* Testing/bug fixing
* Reverse mouse (I added a placeholder, but no functionality nor UI)

Not addressed:
* NDoF will not be supported for now
* We need a nice API to draw in the header while running the operator
View Navigation: pad alignment for DNA struct
View Navigation: fix aim draw not centered
View Navigation: Q/E no longer affects camera_height (they now only work on FREE
mode)
View Navigation: fix for when camera gets stuck
Code cleanup: basic compiler stuff
Style cleanup
removing commented out code
View Navigation: using camera control API
View Navigation: bug, not using EARTH_GRAVITY
View Navigation: scale the scene movements relative to the scene size

Tested with a scene 10x and 100x smaller, and it works great.
View Navigation: fix for sidewalking
View Navigation: offset distance for teleport

for GRAVITY mode I still would like to have this working as to
always keep the camera at walk->camera_height (not during the teleport,
but mostly for the final destination.

Although now that I think of, I think the current behaviour is fine.
So I will consider this done for now.
View Navigation: remove temporary keys
View Navigation: Reverse Mouse option
View Navigation: using static variables to store the speed across
sessions
minor edits (float/double use)
minor variable renaming and correct flag -> bool conversion.