rework ConfigurableToolchain to be be extendable container
- still hard linked tools in ToolType enum and compiler creator methods in GccPlatformToolChain
- register linker, staticLibArchiver, c & cpp compiler automatically for gcc and clang
- assembler, objective-c and objective-cpp are registered to gcc toolchains via related plugins
- rename AbstractToolChain to ExtendableToolChain; don't let VisualCppToolChain extend it