Avoid if() auto-dereference of quoted argument

When testing CMAKE_CXX_COMPILER_ID, do not explicitly dereference
the variable.  Instead let if() do it in an unquoted argument.

This avoids CMP0054 warnings on MSVC.
Port to LLVM/Clang SVN r223652 (trunk)

No changes needed.  Simply record that we have tested with the newer
version.  This version fixes problems with delayed template parsing,
incremental processing, and diagnostic suppression that we need to
fix some of our 'broken' test cases.  In particular, we need these:

* r220400 - Fix late template parsing leak with incremental processing,
  2014-10-22.

* r223525 - Make DiagnosticErrorTrap work even if SuppressAllDiagnostics
  is enabled, 2014-12-05.
RunClang: Delay class implicit members until end of parsing

Tell Clang to enable incremental processing so that it does not tear
down the parser when EOF is reached.  In HandleTagDeclDefinition, queue
completed classes for later processing instead of adding class implicit
members immediately.  Then add implicit members at the end and finally
call clang::Sema::ActOnEndOfTranslationUnit to tear down the parser when
we are done.  This approach allows Clang to finish parsing the
translation unit without interference from our custom implicit member
behavior.

Fix the expected output of the Class-bases test in c++11 mode to match
the new order of the implicit members.
RunClang: Refactor definition of implicit members

Use clang::Sema::PerformPendingInstantiations before we attempt to add
implicit member definitions so any real errors show up first.  Then set
SuppressAllDiagnostics to suppress errors caused by the following.

Iterate over all members of one class at a time in order of completion
of class definition (bases before derived classes).  Force definition of
each member using clang::Sema::MarkFunctionReferenced followed by
another call to clang::Sema::PerformPendingInstantiations to ensure that
members formed by implicitly instantiated templates are completed.
Clang will mark any failed declaration as invalid, allowing us to
exclude it from the output.  This works both for implicit and explicit
members.

Update the test suite to mark test cases that are no longer 'broken'.

According to discussion on the Clang cfe-commits mailing list:

 [PATCH] Add DiagnosticSuppressionScope RAII class
 http://thread.gmane.org/gmane.comp.compilers.clang.scm/110832/focus=111112

this approach may depend on non-guaranteed behavior.  By iterating over
members in order of class definition, we mark any bad special members
invalid in base classes so that when Clang processes those in derived
classes the invalid members are only one "step" away.  Hopefully this
behavior will be easier to preserve if Clang changes in the future.