tinyxml: 2.6.2 with debian patches and CMakeLists.txt

This formula will build a patched version of tinyxml 2.6.2
using the patches from debian. I've summarized the debian
patches in comments in the formula. Here's a link to the
debian patch management page:
http://patch-tracker.debian.org/package/tinyxml/2.6.2-2

I've also added a patch with a CMakeLists.txt that builds
a shared library and provides an install target.

Closes #22100.

Signed-off-by: Xiyue Deng <manphiz@gmail.com>
libcppa: 0.7.1 - Actor Model implementation for C++11

Closes #21952.

Signed-off-by: Xiyue Deng <manphiz@gmail.com>
Allow forcing bottle installation.
brew-reinstall: don't try and rebuild bottles.
brew-reinstall: don't list --force in args.
brew-postinstall: add new command.

Runs post-install jobs in case they failed or need rerun for any reason.
formula_installer: handle post_install exceptions.

Warn users and point them to `brew postinstall` (which can provide a
backtrace).

Closes #21887.
fontconfig: remove patch that was upstreamed ages ago
fontconfig 2.10.95
pango: update deps

 - Always depend on newer fontconfig
 - Remove outdated comment about cairo; we always use our cairo these
   days anyway
harfbuzz: does *not* depend on fontconfig
harfbuzz: depends on freetype
harfbuzz 0.9.20
harfbuzz: ensure icu is enabled
Fix option description that only Clang library is built.

* Also fix an annoyance in caveats (llvm3* -> llvm*).

Closes #22247.
Experimental support for non-Apple GCCs
Provide reusable GNU GCC constants in ENV
Implement fails_with for non-Apple compilers

This adds support for non-Apple GCC compilers in the fails_with code.
A fails_with block for a non-Apple compiler looks like:

fails_with :gcc => '4.8.1' do
  cause 'Foo'
end

Non-Apple compilers don't have build numbers, so compiler failures are
based on version strings instead.

Internally non-Apple compilers can be distinguished because they are
passed around as strings instead of symbols.

In addition, this alters the priority list for compilers, with the
following changes:

* Apple GCC 4.2 and LLVM-GCC swap positions, with GCC now taking
  priority. (Maybe LLVM-GCC should just go away.)
* Non-Apple GCC compilers are ranked below GCC 4.2 but above LLVM-GCC
  and Apple GCC 4.0.
Move Tab creation into build process

The parent process doesn't have access to the selected compiler, which
will be important in the next commit.

Fortunately the child process already has a filtered and massaged
ARGV, so it has enough information to build the tab itself.
Tab: track C++ stdlib in use

There are subtle incompatibilities between Apple's libstdc++ and the
libstdc++ used by the various GNU GCC formulae. In addition, we'll
likely also be supporting libc++ in the future, and that's also
incompatible with the other stdlibs.

Tracking it in the tab lets us make sure that dependencies are all
built against the same stdlib to avoid subtle breakage.