This includes
- a prototype library for IWYU analysis (include-cleaner/{lib,include})
- a standalone tool (include-cleaner/tool)
- replacing clangd's unused-include warning with the library
- adding a new clangd hover interaction
- a clang-tidy unused-include check
This squashes together quite a few patches worth of scope, has no tests, and
designs are half baked. Still it demonstrates that such a library could be
reused across tools & across unused vs missing warnings.
Some significant things that are missing:
- IWYU pragma support and other non-self-contained-header patterns
- ability to sensibly rank suggested includes. (Probably requires a design change to preserve the Node->Symbol->Location->Header DAG)
- better standard library support (macros)
- general accuracy
- missing-include integration for clang-tidy and clangd (mechanical really)
Missing tests & documentation for this check.