This is the first in a series of patches that introduce C++20 importable
header units.
These differ from clang header modules in that:
(a) they are identifiable by an internal name
(b) they represent the top level source for a single header - although that one might include or import other headers.
We name importable header units with the path by which they are specified
(although that need not be the absolute path for the file).
So "foo/bar.h" would have a name "foo/bar.h". Header units are made a
separate module type so that we can deal with diagnosing places where they
are permitted but a named module is not.
From the implementation, I think it should be called only in ActOnStartOfTranslationUnit. So it would be better to move this function to private section to avoid accident calls. We should add such constraint as assumption or at least comment to tell it should be called by ActOnStartOfTranslationUnit.
The name ActOnStartOf* implies there should be a corresponding ActOnEndOf* methods. But there isn't one. So I would suggest to give another name to avoid ambiguity.