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
Tidied up naming schemes for binaries

- Split ClassDirectoryBinaryNamingScheme and DefaultBinaryNamingScheme and simplified both
- Supply a BinaryNamingScheme when creating a NativeBinary
    - NamingScheme dimensions are initialized with full context
    - Don't use nested directories for multi-dimension variants
- Extract some factory stuff out of NativeBinariesModelPlugin
Updated multiple toolchain support for Visual C++

- Extracted knowledge VisualC++ environment into VisualStudioInstall
- VisualCppToolChain allows toolchain to be configured:
    - Can specify installDir and path/env will be setup
    - Can get/set name for each executable
- AvailableToolChains knows how to configure a particular toolchain in a build script
Fix executables for VisualCppToolChain
Locate VisualCpp on 32 bit windows for integration tests
Fix setting of Path variable on windows
Normalize newlines in process output to fix tests on cygwin
Disable test on windows until linking MinGW and Cygwin are fixed