[modules] Fix macro hiding bug exposed if:

 * A submodule of module A is imported into module B
 * Another submodule of module A that is not imported into B exports a macro
 * Some submodule of module B also exports a definition of the macro, and
   happens to be the first submodule of B that imports module A.

In this case, we would incorrectly determine that A's macro redefines B's
macro, and so we don't need to re-export B's macro at all.

This happens with the 'assert' macro in an LLVM self-host. =(


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213348 91177308-0d34-0410-b5e6-96231b3b80d8
Add dump() for MacroDirective and MacroInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213349 91177308-0d34-0410-b5e6-96231b3b80d8
Parse: Diagnose malformed 'message' arguments for 'availability' attr

The parsing code for 'availability' wasn't prepared for string literals
like "a" L"b" showing up.  Error if this occurs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213350 91177308-0d34-0410-b5e6-96231b3b80d8