Adjust fails_with syntax for non-Apple compilers

The old version worked like this:

fails_with :gcc => '4.8.1'

That wasn't really flexible enough, and made it harder to distinguish
different releases in the same GCC series. Since no one was really
using it yet, this adjusts the syntax to be more similar to the
Apple compilers:

fails_with :gcc => '4.8' do
  release '4.8.1'
end

Like with Apple compilers, omitting `release` blacklists the entire
series.
Add fails_without to declare standard requirements

This allows formulae to declare requirements on standards like C++11
or OpenMP, and automatically fills in the fails_with statements for
compilers that don't support it.

Partial solution for the features needed in #22453.