Most users of Module::Header already assume its Entry is populated. Enforce this assumption in the type system and handle the only case where this is not the case by wrapping the whole struct in std::optional. Do the same for Module::DirectoryName.
Depends on D151584.
These are on the edge, but I think I would lean towards spelling the typename here since it's not obvious from the name of the API what exactly it would be