Refactor and fix a latent bug (found by inspection) where an external AST
source that provides a declaration from a hidden module would not have the
visibility of the produced definition checked. This might matter if an
external source chose to import a new module to provide an extra definition,
but is not observable with our current external sources.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208659 91177308-0d34-0410-b5e6-96231b3b80d8