[docs] Build intersphinx inventories locally for cross-project links
Resolving `inv:` links against the published inventories makes a docs
build need the network, and it cannot resolve a link to a label that the
same change adds, because the published site does not have it yet.
An inventory only depends on what Sphinx learns while reading the
sources, not on whether any cross-project link resolved. Add an
`inventory` builder that reads a project's sources and writes only its
`objects.inv`. With CMake, each of llvm, clang, clang-tools-extra, lld,
lldb, flang, and polly gets a docs-<project>-inventory target that reuses
the prerequisites of its html target. The llvm and clang docs depend on
all of them and resolve links against the local files. Links still point
at the published sites.
MyST resolves `inv:` links while reading and caches the result, so the
inventory contents are part of the environment-affecting config; a
changed inventory re-reads the documents instead of leaving stale links.
These projects must be configured together, so CMake now stops with a
message naming any that are missing. LLVM_SPHINX_FETCH_INVENTORIES=ON
restores fetching the published inventories. The runtimes are configured
separately and cannot share inventories, so their links are plain URLs
again. docs.yml builds the projects from one configuration, and the
release script enables lldb and installs swig for its docs.
Also wrap two `inv:` link targets that contain spaces, which Markdown
rendered as literal text.
LLM-aided