Fix assertion about unknown projects in the IDAIM.

The problem was that projects opened before the IDAIM plugin gets
initialized where never added.

To add these in the ctor (synchronously! otherwise we get races),
we must restructure the code a bit. It is notoriously overdesigned
and really should be simplified. Why is the CompilerProvider a plugin?
Why is there ICompilerProvider? Why the distinction across so many
libs/plugins?

Well, more work for later.

(cherry picked from commit 0da10fd76d3436c8d2cd30da18969bdc66e727f2)

Conflicts:
	languages/plugins/custom-definesandincludes/settingsmanager.h
Fix regression: Don't remove the KDEV_USE_EXTENSION_INTERFACE.

Other parts are still relying on that feature.