Replacing QFuture/QtConcurrent with std::future/async.
This replaces QFuture/QtConcurrent with std::future/async. Further this adds try/catch environments around those structures. If one of those threads breaks it will be caught and ran again on main thread.
Some more details:
- the try/catch environment is around each single std::async. This ensures that only those thread are ran on main thread which broke
- There is a bigger picture: Due to custom libqcr message handler MessageBoxes will be created when qDebug() etc are called, which can happen inside of the thread functions. Previous this was a hard to catch error and now this error will be caught and the program continues to work.
Related Issues #89 (closed) for Steca and Issue #7 (closed) and MR 25