demos: Remove swapchain workaround code and don't assume 2 buffers

Addresses Lunar Exchange issue 153
diff --git a/demos/cube.c b/demos/cube.c
index cc8e335..6437a71 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -46,7 +46,6 @@
 #include "vk_sdk_platform.h"
 #include "linmath.h"
 
-#define DEMO_BUFFER_COUNT 2
 #define DEMO_TEXTURE_COUNT 1
 #define APP_SHORT_NAME "cube"
 #define APP_LONG_NAME "The Vulkan Cube Demo Program"
@@ -329,7 +328,6 @@
     VkQueueFamilyProperties *queue_props;
     VkPhysicalDeviceMemoryProperties memory_properties;
 
-    VkFramebuffer framebuffer;
     int width, height;
     VkFormat format;
     VkColorSpaceKHR color_space;
@@ -389,7 +387,7 @@
     VkDescriptorPool desc_pool;
     VkDescriptorSet desc_set;
 
-    VkFramebuffer framebuffers[DEMO_BUFFER_COUNT];
+    VkFramebuffer *framebuffers;
 
     bool quit;
     int32_t curFrame;
@@ -702,15 +700,6 @@
         }
     }
 
-#define WORK_AROUND_CODE
-#ifdef WORK_AROUND_CODE
-    // After the proper code was created, other parts of this demo were
-    // modified to only support DEMO_BUFFER_COUNT number of command buffers,
-    // images, etc.  Live with that for now.
-    // TODO: Rework this demo code to live with the number of buffers returned
-    // by vkCreateSwapchainKHR().
-    uint32_t desiredNumberOfSwapchainImages = DEMO_BUFFER_COUNT;
-#else  // WORK_AROUND_CODE
     // Determine the number of VkImage's to use in the swap chain (we desire to
     // own only 1 image at a time, besides the images being displayed and
     // queued for display):
@@ -721,7 +710,6 @@
         // Application must settle for fewer images than desired:
         desiredNumberOfSwapchainImages = surfProperties.maxImageCount;
     }
-#endif // WORK_AROUND_CODE
 
     VkSurfaceTransformFlagsKHR preTransform;
     if (surfProperties.supportedTransforms & VK_SURFACE_TRANSFORM_NONE_BIT_KHR) {
@@ -767,14 +755,6 @@
                                         &demo->swapchainImageCount,
                                         swapchainImages);
     assert(!err);
-#ifdef WORK_AROUND_CODE
-    // After the proper code was created, other parts of this demo were
-    // modified to only support DEMO_BUFFER_COUNT number of command buffers,
-    // images, etc.  Live with that for now.
-    // TODO: Rework this demo code to live with the number of buffers returned
-    // by vkCreateSwapchainKHR().
-    demo->swapchainImageCount = DEMO_BUFFER_COUNT;
-#endif // WORK_AROUND_CODE
 
     demo->buffers = (SwapchainBuffers*)malloc(sizeof(SwapchainBuffers)*demo->swapchainImageCount);
     assert(demo->buffers);
@@ -1669,7 +1649,10 @@
     VkResult U_ASSERT_ONLY err;
     uint32_t i;
 
-    for (i = 0; i < DEMO_BUFFER_COUNT; i++) {
+    demo->framebuffers = (VkFramebuffer *)malloc(demo->swapchainImageCount * sizeof(VkFramebuffer));
+    assert(demo->framebuffers);
+
+    for (i = 0; i < demo->swapchainImageCount; i++) {
         attachments[0] = demo->buffers[i].view;
         err = vkCreateFramebuffer(demo->device, &fb_info, &demo->framebuffers[i]);
         assert(!err);
@@ -1737,9 +1720,10 @@
 
     demo->prepared = false;
 
-    for (i = 0; i < DEMO_BUFFER_COUNT; i++) {
+    for (i = 0; i < demo->swapchainImageCount; i++) {
         vkDestroyFramebuffer(demo->device, demo->framebuffers[i]);
     }
+    free(demo->framebuffers);
     vkDestroyDescriptorPool(demo->device, demo->desc_pool);
 
     vkDestroyPipeline(demo->device, demo->pipeline);