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.

I'd mostly like some early feedback on architecture before going to far with this.