loader: Fix createInstance to pass pAllocator down

Also fix bug where createDevice failure removes logical device from icd
struct
diff --git a/loader/loader.c b/loader/loader.c
index a51312e..9040f3f 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -193,7 +193,7 @@
             return NULL;
         memcpy(new_ptr, pMemory, orig_size);
         instance->alloc_callbacks.pfnFree(instance->alloc_callbacks.pUserData, pMemory);
-	return new_ptr;
+        return new_ptr;
     }
     return realloc(pMemory, size);
 }
@@ -3712,13 +3712,13 @@
     /* activate any layers on device chain which terminates with device*/
     res = loader_enable_device_layers(inst, icd, &dev->activated_layer_list, pCreateInfo, &inst->device_layer_list);
     if (res != VK_SUCCESS) {
-        loader_destroy_logical_device(inst, dev);
+        loader_remove_logical_device(inst, icd, dev);
         return res;
     }
 
     res = loader_create_device_chain(physicalDevice, pCreateInfo, pAllocator, inst, icd, dev);
     if (res != VK_SUCCESS) {
-        loader_destroy_logical_device(inst, dev);
+        loader_remove_logical_device(inst, icd, dev);
         return res;
     }
 
diff --git a/loader/trampoline.c b/loader/trampoline.c
index 6468ce8..9cca6aa 100644
--- a/loader/trampoline.c
+++ b/loader/trampoline.c
@@ -181,7 +181,7 @@
     }
 
     created_instance = (VkInstance) ptr_instance;
-    res = loader_create_instance_chain(pCreateInfo, NULL, ptr_instance, created_instance);
+    res = loader_create_instance_chain(pCreateInfo, pAllocator, ptr_instance, created_instance);
 
     if (res == VK_SUCCESS) {
         wsi_create_instance(ptr_instance, pCreateInfo);