[CORE][NVEP]: add support for Vulkan interop (#27456)
### Description
<!-- Describe your changes. -->
The Vulkan interop works in a similar way as D3D12 interop.
The shared handles from Vulkan work for CUDA the same way as D3D12
handles. For Linux, we can use file descriptors.
As a sync primitive we use Vulkan timeline semaphores. They are widely
supported since Vulkan 1.2 and work in a similar way as the existing
`ID3D12Fence`s.
### Motivation and Context
<!-- - Why is this change required? What problem does it solve?
- If it fixes an open issue, please link to the issue here. -->
This change allows to use graphics interop also on Vulkan and on Linux.
It addresses a TODO in the external memory API.