[SYCL] Fix use-after-free in ProgramManager::removeImages on dlclose (#22017)
When multiple DSOs define kernels with the same name,
m_DeviceKernelInfoMap shared a single entry keyed by a string_view
pointing into the first DSO's offload table. After that DSO was dlclosed
and unmapped, the dangling key caused a segfault on subsequent map
lookups during the second dlclose.
Change the map key from std::string_view to std::string so
ProgramManager owns the kernel name strings, matching the approach
already used by m_ExportedSymbolImages.
Assisted-By: Claude Opus 4.6