All required dependencies, such as generated code, are materialized, so that tools that use the compilation database work can find those and work properly.
Files that are included in multiple targets result in multiple entries in the compilation database.
This is a diffent approach than https://github.com/facebook/buck2/pull/510. The main differences are:
Closes #307