CUDA 11.6 added the `nvcc -arch=native` flag to automatically compile
for the host GPUs' architectures. Add support for specifying this
special `native` value in `CMAKE_CUDA_ARCHITECTURES` and
`CUDA_ARCHITECTURES`. During the compiler ABI detection step,
detect the native architectures so we can pass them explicitly
when using Clang or older versions of nvcc.
Fixes: #22375
Clang does not automatically choose an architecture supported
by the SDK. The `OFF` value is meant for users to provide their
own architecture flags, so provide one as part of the test.
The `CudaOnly.All` test only sets these in project code after CUDA is
enabled. Add another case to test the values during compiler detection.
Issue: #23161
If empty we otherwise treat it the same as unset in most places, but still end
up failing eventually with a confusing "Failed to find a working CUDA
architecture".
This also detects some other basic invalid ones (e.g. "al").