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.
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
Resolve another circular dependency

kdevplatforinterfaces <-> kdevplatformvcs

IPatchSource uses vcsstatusinfo.h. Be bold and move all interfaces
IPatch* to kdevplatformvcs in order to cleanup kdevplatforminterfaces
mess.
Merge remote-tracking branch 'origin/master' into frameworks

Conflicts:
	plugins/dashboard/CMakeLists.txt
	plugins/dashboard/dashboardcorona.cpp
	plugins/openwith/CMakeLists.txt
	project/tests/CMakeLists.txt
	shell/tests/CMakeLists.txt
	shell/tests/plugincontrollertest.cpp
	util/tests/CMakeLists.txt