Gigacommit ‒ PH2BC whitelisting, PHG fixes, CMake-only build.

Here it is, after three weeks of hide-and-seek through the mazes of
Parse, Sema and CodeGen, bumping from one obscure segfault to a dozen
more obscure errors, having to wait for 10 minutes during each
compilation since the linker needed all my RAM.

So PH2BC finally works.
The AST is built as usual from a C++ file, then in a second pass the
pseudo-header (specified with -pseudoheader-whitelist) is parsed and
Sema whitelists the declarations to be emitted (after making sure it's
the same declaration, the trick was to reuse as much as Sema but not
let it create any declaration).
In order to wait for the whitelist pass all CodeGen calls are deferred
until the end of the parsing. Any forward function declaration or
static variable is also emitted, but after everything else because
their types might not be complete yet.
Finally the PH2BC file modifications were "updated" from the
LLVM/Clang master branch to the 3.3 branch, which makes it compatible
with the recent 3.3 final release of LLVM.

As for PHG:
Removed the protected and private parts of PHG's output, and removed
unneeded scope from template arguments (nth time the charm).
Fixed a minor bug in the original DeclPrinter (adding void to
destructors).
Fixed another bug printing incorrect typedef declarations with an
anonymous tag, at least for PHGen's case.
Space between two '>' required by pre-0x C++ added (yet another minor
bug in vanilla DeclPrinter).
Removed the return type from conversion operators, e.g ->Radian<-
operator class Ogre::Radian() (yaminbug).
Removed restrict qualifiers in extern "C" decls (ideally they should
be removed only for C++ translation units).

The build bash scripts were scrapped and swapped with a pure
CMake-based system that should work on every platform supported by
CMake.
Instead of copying/linking the modified files the build system now
generates patches that are applied to the LLVM source tree. This
blasts the chains of a specific LLVM SVN revision.
TalesClang now replaces the Clang driver instead of having two almost
identical drivers.