Draft: anv: memory allocation pooling
What does this MR do and why?
This MR tries to avoid separate allocations for various memory buffers by using a slab allocator to pool them together in larger BOs.
If the kernel driver allocates continuous chunks of memory, fast paths can be enabled in the ppGTT tables, reducing traversal time.
Wip for now, still debugging CI issues.
Includes changes from !25003 (merged)