First attempt to make it possible to select compiler at run-time.

This introduces CompilerProvider class that provides the parser with
default compiler directories and defined macros.
Also add a GUI option to choose the compiler.

WIP.
Refactor CompilerProvider out into a separate plugin.
Move all settings related operations into SettingsManager.
Add ICompilerProvider interface.

Now it should be possible to change compiler at run-time.
Make CompilerProver depend on projects.

Now it's possible to retrieve correct i/d for many projects opened at
the same time.
Of course it doesn't work properly yet...
Make SettingsManager a shared library to easy access to it's methods.
Load needed CompilerProvider on project opening.
Automatically preselect compiler to deduce includes/defines if none is selected.
Keep in sync compiler path with name.
Fix couple of issues. Also cache includes/defines on project opening.
Remove compile-time dependency of includes/defines for gcc like compilers.

TODO: Do the same for msvc
Completly get rid of compile-time includes/defines detection.
Fix tests.
Make DAIM a global plugin.

That way we can use it even for files without projects.
Minor.

Mostly reformat the code. And add const modifiers.
Refactor code out. Remove redundant classes.
Rethink the architecture a little bit.

Now compiler providers return their names.
Also there are only 3 compiler prividers for all projects, instead of
1 project - 1 provider.
Clean up the interface. Add an useful warning.
Add some asserts.
Improve debug output.