[CUDA] refactor fatbinary to use --image3 (#21054)
## Summary
This change updates clang-linker-wrapper to invoke NVIDIA fatbinary
using the --image3=... image specification format (kind + SM + file)
instead of the legacy --image=profile=... format, which is no longer
supported in CUDA Toolkit version 13 and later.
Since newer CUDA toolkits have removed the legacy --image option,
clang-linker-wrapper must use --image3 to maintain compatibility.
## Changes
- Refactored NVPTX fatbin construction to generate fatbinary arguments
in the following form:
```
--image3=kind=ptx,sm=<N>,file=<ptx>
--image3=kind=elf,sm=<N>,file=<cubin>
```
- Updated the fatbinary helper to consume OffloadingImage objects
directly.
- Adjusted driver tests to accept both legacy and --image3 formats where
applicable.
NOTE: upstream already has this changed implemented in:
https://github.com/llvm/llvm-project/commit/79d8a26832fc72a28969305b72b782642f44ff6c