Add VERSION.txt as canonical version source (#2858)
The version used to live only in crates/Cargo.toml, which created a
chicken-and-egg problem during releases: bumping the version required a
commit, but the tag had to point at the bump commit, and CI would fail
if the tag already existed when the bump PR landed.
VERSION.txt is now the single source of truth. A Go tool
(tools/version/) handles show/check/bump with validation, Cargo.toml
sync, and atomic commits. All build scripts and CI read VERSION.txt
instead of grepping Cargo.toml. The tag-exists check is removed from
PR CI -- that's the release workflow's job now.