This cleans up many un-necessary header includes, either simply providing nothing or forward declarations in their place.
Benefits:
- Faster overall compilation time (in theory, doesn't seem to make much of a difference here)
- Faster incremental recompilation time as dependencies are reduced.
I'll commit this ASAP once I've run a nopch build on the CI (I did one locally), as it's annoying to rebase.
I'll also run a CI compilation-perf-test to see if there's an important overall change.