Overhaul compiler selection code

There are three main things I want to fix in the compiler selection process:

 1. `--cc=` should override any fails_with declarations, so that other compilers can be tested without editing the formula
 * `setup_build_environment` should only set the compiler once, instead of once plus a second time if `fails_with?` returns true
 * allow extra compiler failure objects to be passed into the selector at runtime, so that `build.cxx11?` can imply `needs :cxx11`

This pull request implements (1) and (2), and lays the groundwork for (3).

In particular, the compiler priority queue is gone, replaced with static lists based on `MacOS.default_compiler`. `fails_with?` is moved from the formula instance into the selector, where that logic belongs.

Open questions:

 * In this PR, both `--cc=` and `HOMEBREW_CC` override any `fails_with` declarations because they share the same code path. But `HOMEBREW_CC` can be set permanently by the user, so that's likely not the behavior we want. They should probably be handled separately, but it's not clear to me how setting `HOMEBREW_CC` should influence the selection logic.
@jacknagel I think the answer is different for Homebrew and Tigerbrew here.

On Xcode 3.1.4, the default compiler determined by Homebrew is (always? sometimes?) `:gcc_4_0`, even though `:gcc` (and `:llvm`) are available. That's the cause of issues like #31391. In Tigerbrew, `MacOS.default_compiler` picks `:gcc` over `:gcc_4_0` if it's available.

So this'd be fine in Tigerbrew, and prioritizing Leopard users in Homebrew is not really crucial right now.

I know we've discussed it before - maybe this would be a suitable time to start removing llvm from the priority lists.