anv: Implement VK_EXT_buffer_device_address

This MR implements the new VK_EXT_buffer_device_address extension. Part of the reason why it's so many patches is that 21 of them are part of !70 (merged) (intel: Add support for split SEND instructions). Ignoring those, most of the remaining patches are NIR or SPIR-V work to add support for the PhysicalStorageBufferEXT storage class and nir_var_mode_mem_global. The actual Intel patches (on top of the SEND MR) are a couple compiler patches, one ANV fix, and one patch to implement the API bits of the extension.

As it currently stands, the only known issue with this series is my hackish handling of OpConvertPtrToU and OpConvertUToPtr. @karolherbst has a better patch for it which I'll hopefully get pulled in before actual merging.

For review, I'm hoping for review from:

Merge request reports