Some tool chain refactoring to assist with targeting for architecture

- Can only configure path on GccToolChain, for Visual C++ use installDir
- Only checkAvailable once in ToolChain.target(Platform), rather than in every call to PlatformToolChain
- In VisualCppToolChain, configure the paths/environment when targeting a platform, rather than when setting the installer
First cut at architecture support for Visual C++
Enable binary platform test on windows

- Requires explicit tool chain config for windows
Split the logic for locating a VisualStudio install out of VisualStudioInstall

- When no installDir is explicitly configured, attempt to locate a VisualStudio installation to use for building different architectures.
    - Search based on the location of 'cl.exe' in path