Implementation partitions bring two extra cases where we have
visibility of module-private data.
- When we import a module implementation partition.
- When a partition implementation imports the primary module intertace.
We maintain a record of direct imports into the current module since
partition decls from direct imports (but not trasitive ones) are visible.
The rules on decl-reachability are much more relaxed (with the standard
giving permission for an implementation to load dependent modules and for
the decls there to be reachable, but not visible).
clang-format: please reformat the code