vulkan: rewrite top of loader

The top is responsible for layer discovery and chaining, and the bottom is
like a regular layer that is always enabled and is inserted just before
the driver.  Make the separation clear by rewriting the top and stripping
the layer managment code from loader.cpp.

Change-Id: I64e525e27bd4c297bccd94a1eb9b88e28088e85d
diff --git a/vulkan/libvulkan/Android.mk b/vulkan/libvulkan/Android.mk
index 85b8ab2..e60d74c 100644
--- a/vulkan/libvulkan/Android.mk
+++ b/vulkan/libvulkan/Android.mk
@@ -19,6 +19,7 @@
 LOCAL_SANITIZE := integer
 
 LOCAL_CFLAGS := -DLOG_TAG=\"vulkan\" \
+	-DVK_USE_PLATFORM_ANDROID_KHR \
 	-std=c99 -fvisibility=hidden -fstrict-aliasing \
 	-Weverything -Werror \
 	-Wno-padded \
@@ -38,6 +39,8 @@
 	system/core/libsync/include
 
 LOCAL_SRC_FILES := \
+	api.cpp \
+	api_gen.cpp \
 	debug_report.cpp \
 	dispatch_gen.cpp \
 	layers_extensions.cpp \