We need to traverse the module dependency graph and track which modules expose
which other modules' ABIs, while making sure that we don't hit a loop while
trawling through Clang (sub)modules.
Fixes rdar://64993153.
Overlay-overlay dependencies are incorrectly marked indirect when the
downstream overlay's underlying module imports the upstream overlay's
underlying module but the downstream overlay does not explicitly import
the upstream overlay.
This is purely designed to cheaply compute dependency graphs between
modules, and thus only lists the top-level names (i.e. not submodules)
and doesn't do any form of semantic analysis.