Use custom QEvents for communicating between PlatformTheme instances
This adds a number of custom QEvent subclasses that are used to inform PlatformTheme instances of changes that happened. These can then be used by subclasses to trigger updates in a more informed way. This avoids problems where triggering a change would trigger a bunch of changes that potentially trigger changes again, causing a storm of changes that would massively slow down applications.