Add methods to retrieve appropriate archflags

Inspired by @adamv's work in #21330.

This creates new methods to retrieve the appropriate architectures for a given processor, and uses them in stdenv, superenv, and formulae. Added in this pull request are:

`MacOS.preferred_arch` - Returns `arch_32_bit` or `arch_64_bit` based on `MacOS.prefer_64_bit?`. Replaces an enormous amount of ternary copypaste we've been repeating over and over.
`Hardware::CPU.arch_32_bit` - The CPU's 32-bit arch, currently `i386` or `ppc`
`Hardware::CPU.arch_64_bit`
`Hardware::CPU.universal_archs` - Helper that returns an array of both the 32-bit and 64-bit archs for the given CPU type, mainly to construct multiple arch arguments

I'm open to naming suggestions on `arch_(32|64)_bit`. Can't start a method name with a number unfortunately.