Generated code must macro-guard platform specific code, but did it in a
naive fashion where consecutive guards for the same platform repeated the
macro. With the help of PlatformGuardHelper, the code generation will elide
redundant macro guards.
Non Dispatchable handles are not typed in 32 bit builds, so the
vku::GetObjectHandle() helper fails to compile. The solution is to just
not define the helper in 32 bit builds.
Move the vk_typemap_helper.h file in Vulkan-ValidationLayers over to this
repo with a different name to reflect the use of it
Changes from that include:
* Rename the functions to be more obvious as to what they do
* Placing them in the `vku` namespace
* Adding the `InitStructHelper` class which deduces the type based on the
variable that is being initialized
* Compiler error if there is no corresponding sType