1. [FIX] crash when opening a document and no backend was found
The function GeneratorThread::run() accesses backend pointer without
checking their validity. If the application fails to find any backend, these
pointers will be nullptr and the application will crash.
GeneratorThread::run() is called once a new file is opened, e.g. if you call
```
$cirkuit /path/to/file
```
on the commandline.
2. also show error msg when generating preview failed because of missing backends
3. Only re-select the backend, if this is really wanted.
Calling Backend::autoChooseBackend(file) is pretty costly. For each backend,
the whole file will be searched for various keywords. The number of hits is
then compared.
Therefore the constant boolean value CirkuitSettings::autoSelectBackend()
will be checked first. Only if re-selecting is enabled by the user, the
backend selection will be done.
This could reduce some otherwise unnecessarily wasted cpu cycles.