Add libkwinvulkanutils
This library provides C++ wrappers for a number of Vulkan objects.
The main point of these wrappers is to have objects that know how to
delete themselves, and that also inherit from a common base class that
has a virtual destructor. The wrappers also provide type safety on
32-bit platforms, where non-dispatchable Vulkan handles are typedefs
of uint64_t.
These objects can be made refcounted by wrapping them in an
std::shared_ptr. This allows each frame to hold a list of references
to busy objects.
In addition to the above mentioned wrappers, the library also provides
a set of utilty classes. These include UploadManager, which is used
for uploading vertices and uniforms; and PipelineManager, which creates
and manages the core graphics pipelines and associated layouts.