Follow-up to #35468 and #36228, which fixed the fatal error: '…' file not found messages reported in #35361 by generating the required headers before IWYU runs.
Those errors were only ever printed to the raw CI logs and never failed the job, because iwyu_tool.py's non-zero exit is swallowed by || true. That is how they went unnoticed for so long.
IWYU cannot analyse a file that fails to compile, so this turns such compiler errors into a real CI failure: after capturing IWYU output, the job fails if it contains a clang fatal error: line and prints the offending file, pointing at the GOAL header targets in ci/test/00_setup_env_native_iwyu.sh. The check lives in run_iwyu() so it covers both the enforced and non-enforced passes, since the errors originally reported came from files in the non-enforced pass.
This locks in the recent header-generation fixes and guards against regressions such as a new capnp-generated header or a renamed target.
I confirmed the current master iwyu job log is free of fatal error: lines, so this does not turn CI red today.
Closes #35361.