Separate AST from GhcPass (#18936)
I wrote a very massive commit message for the proportionally massive first commit, so see that for details (keeping the PR message and it in sync would be a bit of a pain).
The second commit adds a test to track AST module closure.
This MR is will bit-rot super quick, since I am cleaving these massive 2,000+ line modules that everyone touches in two. I therefore hope we can decide what to do with it quickly! :)
Edited by John Ericson