Enable layering check in unavailable modules.

If a header file belonging to a certain module is not found on the
filesystem, that header gets marked as unavailable. Now, the layering
warning (-fmodules-decluse) should still warn about headers of this
module being wrongfully included. Currently, headers belonging to those
modules are just treated as not belonging to modules at all which means
they can be included freely from everywhere.

To implement this (somewhat) cleanly, I have moved most of the layering
checks into the ModuleMap. This will also help with showing FixIts
later.
[msan] Wrap indirect calls to REAL(x) in interceptors.
[sanitizer] Add missing file comment.
[sanitizer] Use the new sanitizer_interception.h header in all interceptors.
[msan] Add missing visibility attribute to MSan new/delete interceptors.
Empty line between two unrelated #ifdefs.