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.
This hash is [accessed with `MacOS.default_compiler` as a key](https://github.com/jacknagel/homebrew/blob/af7b86cfb4a3395bf847ab043aa9ad63af162c18/Library/Homebrew/compilers.rb#L88). The first entry in each array is identical to the key, so the default compiler is always tried first. [`find_compiler`](https://github.com/jacknagel/homebrew/blob/af7b86cfb4a3395bf847ab043aa9ad63af162c18/Library/Homebrew/compilers.rb#L107) iterates over this array and yields available compilers. When the iteration hits `:gnu`, `find_compiler` [yields any available GNU GCCs, in order from newest to oldest](https://github.com/jacknagel/homebrew/blob/af7b86cfb4a3395bf847ab043aa9ad63af162c18/Library/Homebrew/compilers.rb#L110-L115).

@mistydemeo I wanted to call your attention to the priority lists. I assume that in most cases where `:gcc_4_0` is the default, `:gcc`, `:llvm`, and `:clang` won't be available, but I included them in the list for completeness.