Vulkan/Debug: Add WeakMap
Vulkan/Debug: Add WeakMap

WeakMap is an associative container of keys of type K to values of type std::weak_ptr<V>.
WeakMap's iterators will skip over elements where the value has no more remaining std::shared_ptr<V> references.

Used to automatically track live debug objects.

Bug: b/145351270
Change-Id: I87b9a9be4b83ff887510f292a4e03770ccc9eeaf
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38894
Reviewed-by: Nicolas Capens <51edc787c30f24c4904e8ffbb5523c3a9f7a451d@google.com>
Tested-by: Ben Clayton <1f693eb7158dc33015048c09d6712f74dabddf79@google.com>

google/swiftshader,google/swiftshader,bkaradzic/SwiftShader,bkaradzic/SwiftShader,bkaradzic/SwiftShader,bkaradzic/SwiftShader,google/swiftshader,bkaradzic/SwiftShader