Minor: Consistent method naming
OutputView: Reduce some code duplication
Introduce NativeAppErrorFilteringStrategy

It's now possible to jump to runtime output error messages, such as
those from Qt:

Example (clickable) message:
ASSERT: "errors().isEmpty()" in file /tmp/foo/bar.cpp, line 49

BUG: 329953
REVIEW: 115533
Do not emit warnings when starting a new KDevelop session.

Since we always created the directory before checking whether it
needs to be cleared up, we always ended up calling kWarning with
confusing messages. It also made it impossible to use something
like QT_FATAL_WARNINGS in unit tests which always use temporary
sessions.
Share common code for file paths to serialized topducontext data.
Get rid of s_temporaryDataMutex.

We already have our BKL in place, no need for another level of mutex here.
Share code between partial data loading functions.

Lambdas are pretty helpful in this context imo.
cleanup: move implementation of exported SourceFormatterStyle to cpp file
Allow language plugins to provide styles to formatters

REVIEW:115590
This is a binary-incompatible change; relink kdevelop and all
language plugins or you will get crashes.
The basic is to shift the philosophy of source formatters a bit: instead
of providing integration with one fixed tool with many slightly
different configurations, a Source Formatter plugin can provide an
engine for source formatters which can do very different things
depending on the configuration. For many languages (I obviously have
python in mind) tools already exist which re-format source code and just
need to be called. Writing a new formatter plugin for each of those
would basically duplicate the existing functionality (especially from
the customscript formatter) for each language.

Thus, this patch provides a new virtual function in ILanguageSupport
which allows language plugins to return any amount of formatting
configurations for any source formatter plugin (the formatter plugin
choses which of the items it accepts based on a name).

To make this useful, the mime type and language, and -- optionally -- a
text sample different from the default are now stored inside the
formatting configuration items. The list of displayed configurations is
filtered by language. Only formatting engines which support at least one
configuration for a selected language are shown (as before), but this is
now "dynamic" and depends on the loaded language plugins (it's no longer
hardcoded in the .desktop file).
Merge remote-tracking branch 'origin/master' into dark_theme_colors