Prefer MTLEvent over MTLFence for VkSemaphore, because MTLEvent handles sync across MTLCommandBuffers and MTLCommandQueues, except on NVIDIA GPUs, which have demonstrated trouble with MTLEvents, prefer MTLFence. Add MVKDevice::VkSemaphoreStyle enum.
Prefer MTLEvent over MTLFence for VkSemaphore, because MTLEvent handles sync across MTLCommandBuffers and MTLCommandQueues, except on NVIDIA GPUs, which have demonstrated trouble with MTLEvents, prefer MTLFence. Add MVKDevice::VkSemaphoreStyle enum.