Move CompilerSelector logic into build env setup

This moves the CompilerSelector fails_with logic into the build
environment setup, making the compiler selection available before
performing actions that depends on knowing what the compiler is, e.g.
setting up PATH.

ENV.setup_build_environment now optionally takes a Formula argument
to provide the information necessary to do the fails_with, and the new
ENV.validate_cc! extracts the fails_with logic from Build.install.

This also fixes superenv's ENV.clang/etc. methods, which were
overriding CC and causing superenv to potentially skip the compiler
wrapper.