Singletons tracked by QGCApplication

This is stage 1 of fixing Issue #1007 

- Adds the ability for QGCApplication to create and destroy the global singletons.
- Unit Tests now use real QGCApplication object
- Global singletons are destroyed and re-created clean for each unit test run