outputconfiguration: Make OutputChangeSets to be used as QSharedPointers
Instead of parented QObjects, this way we can keep them around as we need them. In practice it's a data only structure which makes it safe. This allows us to treat configuration changed events asynchronously.