effects/screenshot: Port to QPromise
QFutureInterface is technically internal Qt API and the screenshot uses it solely because we knew that there won't be any future Qt 5 releases and it won't be removed in 5.15 patch releases.
In Qt 6, we have proper public API. Unlike QFutureInterface, QPromise is not copyable, therefore this change also ports some parts of the screenshot effect from QVector, which uses copy-on-write, to std::vector.
Edited by Vlad Zahorodnii