Defer resetting MTLTexture in MVKSwapchainImage until request to acquire.

Move call to MVKSwapchainImage::resetMetalDrawable() from immediately after
presentation until request to acquire, to preserve image content for copying
after presentation in cases such as an app screen capture operation.

Testing indicates this deferral has little or no adverse effect on the performance
of retrieving the drawable when next needed.
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
index 47208f6..4a226d9 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
@@ -958,7 +958,6 @@
 	[mtlCmdBuff presentDrawable: getCAMetalDrawable()];
 	if (scName) { mvkPopDebugGroup(mtlCmdBuff); }
 
-	resetMetalDrawable();
 	signalPresentationSemaphore(mtlCmdBuff);
 
 	retain();	// Ensure this image is not destroyed while awaiting MTLCommandBuffer completion
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm
index 9bc255f..b93d3b9 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm
@@ -97,6 +97,7 @@
 
 	// Return the index of the image with the shortest wait and signal the semaphore and fence when it's available
 	*pImageIndex = minWaitImage->_swapchainIndex;
+	minWaitImage->resetMetalDrawable();
 	minWaitImage->signalWhenAvailable((MVKSemaphore*)semaphore, (MVKFence*)fence);
 
 	return getHasSurfaceSizeChanged() ? VK_ERROR_OUT_OF_DATE_KHR : VK_SUCCESS;