Slighlty improve EnvironmentWidget

- Make Key_Delete a shortcut for removing a variable
- Add icons to "{Add, Remove} Group" button
assistant popup: blind shot at trying to fix the very occasional focus issues
Fix item repo issues with hash clashes and monster buckets.

1) Do not alter bucketPtr before freeing it up.

Before, we deleted an item and then sometimes changed the bucketPtr
when there where clashing items. If the new bucketPtr was then a
monster, we assumed its item was deleted and assert that. As we
deleted the item in a different bucket, the assertion did not hold
and we crashed...

The assertion happens when a normal item is deleted and another
monster item exists with the same hash in a different bucket.

2) Unset next bucket for hash, before deconverting it.

This is probably just a workaround, as a comment above hints at
a general problem here, that this should be done more regularly.
Calling setNextBucketForHash(hash, 0) always though leads to other,
new problems and assertions. So I'll leave it as is for now.

The assertion happens when a monster item is deleted and another
item exists with the same hash in a different bucket.

BUG: 272408
Delete dead code
fix compiler warnings.
Merge branch 'master' of git://anongit.kde.org/kdevplatform into dark_theme_colors
Do not crash when inserting only colons into the outline quickopen filter.
Re-enable plugin controller tests and fix double-emit of signal.

The unit test promplty showed a problem, where unloading a plugin
actually leads to a double-emit of the pluginUnloaded signal from
the plugin controller.
Extend test and check for unloadingPlugin signal.
Optimize PluginController::pluginForExtension for common case.

When we look up an already loaded plugin by its extension, we can
bypass the costly KPluginInfo::fromServices call by just checking
the extension of the loaded plugins directly.

The benchmark shows that this is much faster:

Now:
     0.00080 msecs per iteration (total: 53, iterations: 65536)
Before:
     1.1 msecs per iteration (total: 72, iterations: 64)

This is especially noticeable with the new IDefinesAndIncludesManager
plugin, which will be queried for every file we parse. In kdev-clang,
the call to pluginForExtension was a bottleneck when we reload an
already parsed session with many files.
Add missing file - oops.
Move KDevelop::Path to kdevplatformutil

Removes the cyclic dependency kdevplatforminterfaces <->
kdevplatformproject.
That in turn makes some things easier in frameworks.

Remove Path::toIndexed(), because it creates an additional dependency on
kdevplatformlanguage
Fix copypasta typos
Add json test for context's range
Merge branch 'master' of git://anongit.kde.org/kdevplatform into dark_theme_colors
Add providers notion into IDAIM.

Now it's possible to query IDAIM for any type of includes/defines, not
just user specified.

REVIEW: 117835
Add reparseProject method into ProjectController.

It can be used when we need to reparse a project, where
significant changes occured, that can't be tracked by current API,
e.g. some defines were modified.

REVIEW: 118031
Minor: Fix typo
OpenProjectDialog: Try too make less ugly

Get rid off the attempt to use HTML in order to align the items in the
KPageWidgetItem. It breaks if the strings get too long. Instead, just
show what will be done if "Next" is clicked.
Add a project name validation in the project creation dialog

This patch adds a regex validation for the project name in the project creation dialog. The user can break KDevelop with an abnormal project name. The first attempt was to add a general regex, but this would be to static. So the idea and the following implementation is:

- If the project template file, for example 'cmake_plaincpp.kdevtemplate', provides a 'ValidProjectName' value, this value will be used. This value is a normal regex. For example 'ValidProjectName=^[a-zA-Z][a-zA-Z]+$' is a valid configuration
- If there is no 'ValidProjectName' value, kdevplatform will use a normal regex, in this case '^[a-zA-Z][a-zA-Z0-9_]+$'. With this fallback mode we can guarantee, that templates without a 'ValidProjectName' also have a validation.

If this patch gets accepted I will add this configuration to the templates provided by KDevelop. I will also write a (bigger) patch to add these feature in KAppTemplate - if wished.

REVIEW: 117407