This PR adds system SVM testing both using driver APIs
(`clSVMAllocWithPropertiesKHR`) and the system allocator directly (e.g.
`malloc`). This is done by finding all of the SVM capabilities that are
"system allocated" and duplicating them with a special "use system
allocator" pseudo-capability. When the "use system allocator"
pseudo-capability is not present, the system SVM type is treated the
same as all other unified SVM types and is tested using driver APIs.
When the "use system allocator" pseudo-capability is present, the system
SVM type is allocated using the system allocator directly, though this
also adds some limitations, for example the properties of the allocation
may not be queried using `clGetSVMPointerInfoKHR`.
See discussion in:
https://github.com/KhronosGroup/OpenCL-Docs/issues/1446
This PR includes tests for `clSVMAllocWithPropertiesKHR` and
`clGetSVMPointerInfoKHR` for valid pointers, as per the unified SVM test
plan. These tests are passing on many devices with the unified SVM
emulation layer.
Note, these tests use the same test fixture and unified SVM wrapper as
the unified SVM capability tests in #2210.