Improve build times through header removal and relocation
- Eliminate unused headers
- reduce dependencies among headers (slightly)
The include-what-you-use tool (IWYU) was used to analyze header dependencies and recommend fixes; some additional manual work was then performed.