Changes to allow unit tests to run on main ui

This allows for unit tests to use the real QGCApplication object. It also allows for the singletons to be created and destroyed for each individual unit test. Thus creating a clean state for each test to run in. This is the first step in changing the codebase to allow for unit tests to be written which run on the main app ui. As described in Issue #1007 

The changes itself looks much larger than it really is. Since the change affects how code gets access to the LinkManager, UASManager, AutoPilotPluginManager and MainWindow singletons it hits a lot of places. But the change is just to go from foo::instance to qgcApp()->singletonFoo. The real change is in QGCApplication.cc/h which supports all of this.