plugins/screenshot: Cache screenshot attributes
When a QPromise reports results, it's not necessary that the QFutureWatcher is going to report it immediately. That can happen at some point in the future, which is okay according to the QFuture api contract.
Due to that, we cannot assume that the stored Output and EffectWindow objects pointers are valid when the QFutureWatcher::finished is emitted.