VERIFY_*_HEADER_SETS: Create verification targets even when empty

Always create `<target>_verify_*_header_sets` targets and the aggregate
`all_verify_*_header_sets` utility targets when the corresponding
property is enabled, even when no matching headers exist.

When headers exist, an OBJECT library is created as before. When no
headers are found, a UTILITY target is created instead to avoid
warnings from tools like Xcode's libtool about empty static libraries.

Update documentation with `.. versionchanged:: 4.4` directives, update
tests, and add a release note.

Fixes: #27685
17 files changed