fix: sort compatibility matrices for deterministic output (#3006)
The compatibility matrix update workflow was opening PRs even when
the underlying data hadn't changed because the output was not
idempotent.
- CUDA was already sorted correctly
- PyTorch was non-deterministic because fetchCurrentTorchVersions
iterates over a Go map with random iteration order
- TensorFlow was non-deterministic because it iterates over HTML
table rows in document order
Add stable sorting to both PyTorch and TensorFlow generators before
serializing the JSON output, plus tests verifying deterministic
sorting.
Fixes non-idempotent compatibility matrix PRs.