[NATIVECPU] urEnqueueUSMMemcpy2D implementation added (#20002)
This makes at least the following `e2e` tests pass on NativeCPU:
```
SYCL :: USM/memops2d/copy2d_device_to_device.cpp
SYCL :: USM/memops2d/copy2d_device_to_dhost.cpp
SYCL :: USM/memops2d/copy2d_device_to_host.cpp
SYCL :: USM/memops2d/copy2d_device_to_shared.cpp
SYCL :: USM/memops2d/copy2d_dhost_to_device.cpp
SYCL :: USM/memops2d/copy2d_dhost_to_dhost.cpp
SYCL :: USM/memops2d/copy2d_dhost_to_host.cpp
SYCL :: USM/memops2d/copy2d_dhost_to_shared.cpp
SYCL :: USM/memops2d/copy2d_host_to_device.cpp
SYCL :: USM/memops2d/copy2d_host_to_dhost.cpp
SYCL :: USM/memops2d/copy2d_host_to_host.cpp
SYCL :: USM/memops2d/copy2d_host_to_shared.cpp
SYCL :: USM/memops2d/copy2d_shared_to_device.cpp
SYCL :: USM/memops2d/copy2d_shared_to_dhost.cpp
SYCL :: USM/memops2d/copy2d_shared_to_host.cpp
SYCL :: USM/memops2d/copy2d_shared_to_shared.cpp
SYCL :: USM/memops2d/fill2d.cpp
SYCL :: USM/memops2d/memcpy2d_device_to_device.cpp
SYCL :: USM/memops2d/memcpy2d_device_to_dhost.cpp
SYCL :: USM/memops2d/memcpy2d_device_to_host.cpp
SYCL :: USM/memops2d/memcpy2d_device_to_shared.cpp
SYCL :: USM/memops2d/memcpy2d_dhost_to_device.cpp
SYCL :: USM/memops2d/memcpy2d_dhost_to_dhost.cpp
SYCL :: USM/memops2d/memcpy2d_dhost_to_host.cpp
SYCL :: USM/memops2d/memcpy2d_dhost_to_shared.cpp
SYCL :: USM/memops2d/memcpy2d_host_to_device.cpp
SYCL :: USM/memops2d/memcpy2d_host_to_dhost.cpp
SYCL :: USM/memops2d/memcpy2d_host_to_host.cpp
SYCL :: USM/memops2d/memcpy2d_host_to_shared.cpp
SYCL :: USM/memops2d/memcpy2d_shared_to_device.cpp
SYCL :: USM/memops2d/memcpy2d_shared_to_dhost.cpp
SYCL :: USM/memops2d/memcpy2d_shared_to_host.cpp
SYCL :: USM/memops2d/memcpy2d_shared_to_shared.cpp
SYCL :: USM/memops2d/memset2d.cpp
```