Provide better diagnostics when GCC or Clang is not available.

- Provide details about where we searched for a command-line tool that could not be found.
- Provide details about why we think the 'g++' tool is not g++, eg its actually clang.
Changed the GCC tool chain so that it does not search the system path if a search path has been declared.
Changed the GCC linker to place user args at the end of the command-line, so that -l options work with the linker on linux.