Bug 1002596 - Fix various sccache problems with clang. r=mshal

- The compiler detection uses a c input, which clang++ complain about on
  stderr, and that fails because stderr is not opened for write when executing
  it.
- The -M* flags are given to both the preprocessor and the compiler, which
  breaks what ends up in depfiles because of the temporary source files for
  compilation. We only mean to use those flags on preprocessor.
- sccache doesn't know all flags clang supports that take a value, most notably
  -arch, we use during the build.
- clang tries to be smart with warnings, and may emit more of them when
  compiling preprocessed output, which, when combined with -Werror leads to
  build failures.
- ECONNREFUSED value is not the same as on Linux