Improved user control architecture

This is an implementation based on my comments here https://groups.google.com/forum/#!topic/phoenixpilot/xbE3ws3DzUc

Basically it separates out the various user control sources and failsafes into separate files and tries to formalize an interface between them. I think it should also help for more flexible use of flight mode switches etc in the future.

Tested and seems to work fine.