Observers are now run on the threads that they are triggered on. Implemented qtInvokeOnMainThreadBehavior to handle observers for gui elements and to provide a general purpose mechanism to run logic on the gui thread. Refactored gui components that are observer-driven to use qtInvokeOnMainThread.