CUDA: Implement MSVC runtime library abstraction
In !3211 (merged) we overlooked updating flags for CUDA on Windows, where nvcc uses MSVC as the host compiler. Add them now and update the MSVCRuntimeLibrary test to cover CUDA.
To make this work with the Visual Studio generators, apply the refactoring from !3177 (merged) to CUDA as well so that the MSVC runtime library selection logic runs.
Fixes: #19428 (closed)