[clang][NFC] Disentangle `MacroState` from `Preprocessor`
`Preprocessor` contains a map of `IdentifierInfo` to `MacroState`; this is reasonable -- the macro state is part of the overall preprocessor state. `MacroState` depends on `Preprocessor`; this is less reasonable and means that to understand `MacroState` you must first understand `Preprocessor`, but to understand `Preprocessor` you must first understand `MacroState`.
Move `MacroState` to its own file. This pulls along `FullModuleMacroInfo` since a `MacroState` is either a `MacroDirective` or a `FullModuleMacroInfo`.
Replace all `Preprocessor` parameters with only the components of `Preprocessor` that we actually need. This gives us a simpler layering where `Preprocessor` code knows about `MacroState` but `MacroState` code does not know about `Preprocessor`.
`updateModuleMacroInfo` used to be a private member function of `Preprocessor`, but its purpose is to manage `MacroState`. Instead have `MacroState` use it as an implementation detail function.
Add a new type, `PPReferences`, to bundle up references to state that `MacroState` needs as read-only other than the `IdentifierInfo` (since that's conceptually a different kind of thing).
This change also required changing `MacroInfo::isIdenticalTo` to accept the useful components of `Preprocessor` rather than the whole `Preprocessor`.