loader: Fixes in trampoline code to support layers which wrap objects

Loader trampoline code may see wrapped objects.  Don't do value comparisons
of dispatchable objects but instead compare dispatch tables to find objects.
PhysicalDevice objects where may have multiple gpus with same instance dispatch
will be fixed in a later patch.
diff --git a/loader/loader.h b/loader/loader.h
index cd795c5..e27f18c 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -373,6 +373,8 @@
 struct loader_icd *loader_get_icd_and_device(
         const VkDevice device,
         struct loader_device **found_dev);
+struct loader_instance *loader_get_instance(
+        const VkInstance instance);
 struct loader_icd * loader_get_icd(
         const VkPhysicalDevice gpu,
         uint32_t *gpu_index);