inreplace: Open the file as binary

Closes #22628.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
go: upstream patch for clang when cross-compiling

More properly fixes #22610.
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.
superenv: don't set CC in ENV.clang/etc.

These methods were overriding CC and causing superenv to potentially
skip the compiler wrapper - especially if no wrapper existed for the
compiler being used, e.g. GNU GCCs.

Closes #22443.
Fixes #22249.
Fixes #22424.
Fixes #22506.
Fixes #22521.
Fixes Homebrew/versions#207.
Combine attr declarations
Decouple Resource from SoftwareSpec
SoftwareSpec tests are now Resource tests
Reimplement SoftwareSpec on top of Resource
Move formula resources to SoftwareSpec
Track initialized specs
Make top-level resources apply to all specs
Make spec-scoped resources override top-level resources
Download strategies take a resource now
Reorganize resource download methods
More useful error message for missing checksums
create: use resource for checksum detection
scala: use resources
git-flow: use resources
docbook: use resources
Allow partial installation of resources