[UR][L0] Fix barrier event cleanup on urEventRelease (#21340)
Event pools (zeEventPoolCreate) are cached but never destroyed during
execution -- zeEventPoolDestroy only runs in Context::finalize() at
exit. Long-running apps exhaust vm.max_map_count (~65K) in under 2
hours.
Root cause: event caching holds pool slots indefinitely, preventing
decrementUnreleasedEventsInPool() from freeing pools.
Fix: destroy underlying ZeEvent when caching events to release pool
slots; re-allocate a fresh ZeEvent when reusing cached events; destroy
fully-empty pools immediately when the cache already has an available
pool.
Tested on PVC (120s Grid): pools destroyed during execution went from
0/1584 to 10099/11674 (86.5% recycled), bounding steady-state at ~1575.
Co-authored-by: winston.zhang <winstonz@borealis-admin1.hpe.jf.intel.com>