vulkan: Implement support for dedicated imported allocations

Dedicated allocations are ones where memory is allocated with
a single image or buffer specified at allocation time, and only
that buffer or image can be bound to the memory.

Our first use-case for supporting it is to handle importing dma_bufs
on AMD hardware, where the driver says dedicated allocations are
required.

There are no dramatic changes required to enable this. We are not
supporting generic dedicated allocations at this time as we don't
have a use for them.

This change also includes alignment verification logic from haasn.

I've tested this on Intel hardware, which doesn't require dedicated
allocations, but works fine if you force them.
11 jobs for dedicated in 7 minutes and 45 seconds (queued for 1 second)
latest
Status Job ID Name Coverage
  Build
passed #415601
aarch64 docker
build-aarch64

00:00:39

passed #415602
macos
build-macos

00:00:06

passed #415597
amd64 docker
build-ubuntu

00:00:37

passed #415598
amd64 docker
build-ubuntu-static

00:00:37

passed #415599
amd64 docker
build-win32

00:00:18

passed #415600
amd64 docker
build-win64

00:00:18

 
  Test
passed #415604
gpu
test-gpu

00:01:53

76.6267%
passed #415605
gpu
test-gpu-asan

00:02:01

passed #415606
gpu
test-gpu-msan

00:01:38

passed #415607
gpu
test-gpu-ubsan

00:01:30

passed #415603
amd64 docker
test-ubuntu-scan

00:00:32