Simplified ClassLoaderVisitor.
Moved some classes from core to baseServices.
use consistent spelling for `customize` throughout docs and codebase

- some minor other spelling improvements along the way
Refactored the way new resolution result is built so that it is easy to serialise the new model.
Refactoring - used the static fields for better clarity.
Small refactoring - used specific exception.
Refactoring - removed one public constructor.
Small refactoring - used specific exception.
Some refactoring, removed redundant listener that turns out not necessary. Some rename job.
Steps towards serialising the new dependency graph model (we already stream the old model).
Added some stats to the resolution results caching. Tweaked the cache's max items.
Improved how the resolution result stats are presented, introduced buffered input/output streams (streaming resolution results).
ToolChainRegistry permits configuring multiple tool chains

- Plugins register default tool chain instance
- Default tool chains are overwritten by configured tool chains
- No integration test coverage yet
Made it easier to work with C++ HelloWorld app sources in integ tests
Fix ToolChainRegistry to that configuration works correctly

- Still not sure if the model/implementation is right: straw-man
Renamed AbstractBinariesIntegrationTest -> AbstractInstalledToolChainIntegrationTest

- Now references an InstalledToolChain (will never be run with unavailable tool chain)
- InstalledToolChain provides implementation class name
- Added basic test that explicitly configures tool chain in path
Hacked together support for running multiple versions of GCC without changing path
Set PATH of environment correctly before executing a configured C++ toolchain exe
Allow the executable names for a ToolChain to be configured
Fix some toolchain tests