core: DownloadManager: remove incomplete files after failed downloads

Otherwise the haveLocalResource() call might report existence of
unusable files.
core: improve DownloadManager interface for use by the QML layer

- Expose abortDownloads() to make it available to the QML layer.
  To avoid deadlocks upon aborting replies the downloadFinished()
  signal  must be disconnected first. Therefore we now connect to
  individual QNetworkReply::finished() signals instead of the
  corresponding signal of QNetworkManager.

- Expose new downloadIsRunning() method.

- Expose new downloadStarted(...) signal.

- error() signal: add QNetworkReply::NetworkError as first parameter

- downloadFinished() signal: add return code (DownloadFinishedCode)
  as parameter to distinguish Success from Error from NoChange
core: add DownloadDialog type and dialog helper functions in core.js

Popup dialogs like message boxes and friends have a dynamic nature that
does not fit well with the static QML definitions. Therefore helper
functions for showing/hiding such dialogs dynamically have been added
to core.js. Thus a dialog element does not need to be declared in QML:

1. showMessageDialog(parent, title, text, informativeText, icon,
buttonHandler) instantiates a Messagedialog object dynamically as child
of the  passed parent object.

2. showDownloadDialog(parent, properties) instantiates a DownloadDialog
object dynamically.

The DownloadDialog type visualizes download-progress of the
DownloadManager. It can be used statically (defined in QML) as well as
dynamically (through above helper in core.js). It connects to the
corresponding signals of DownloadManager and makes use of dynamic
MessageDialog objects to report success or error of the operation (if
requested).
core: ApplicationSettings: add exeCount to new Internal settings group

The exeCount setting is meant to track the number of application runs.
This is primarily needed to be able to detect the first run.

It is stored in the newly added [Internal] settings group, which
should not be edited by the user.
core: main: show popup message on the first start
core: Bar: visualize running downloads in the bar

Clicking on the download image launches the DownloadDialog.
core, DialogConfig: adjust to dialog helpers and show some more
information about available voices files

The user can now see immediately if sound files for his current locale
are installed and can trigger a download- or update-request.

Also we inform after a newly selected locale upon "save" if the
corresponding sound files are not yet available.
core: add helper for activities checking for voices availability
click_on_letter: inform user if voices are missing

... using checkForVoices() helper

Also make sure to show target letter if no voices are available for
current locale.
planegame: inform user if voices are missing

... using checkForVoices() helper
click_on_letter: update click_on_letter audio upon startup

Otherwise it will be wrong after changing locale