vulkan: Improve GetPhysicalDeviceExternalSemaphoreProperties()
The previous implementation made a lot more assumptions about the symmetry of import and export and details of how sync types were listed by the driver. This makes a few improvements: 1. The SYNC_FD handle type requires that all imports are temporary. Even if it isn't supported for export by any sync types, it may still be supported input-only. Properly advertise this. 2. There was generally too much coupling going on between import and export where we assume everything that can do import can do export as well. Sort that out by only considering export when searching for the sync_type to compre against. 3. Add more restrictions around compatible handle types such that we now guarantee that arbitrary subsets of the reported handle types won't end us up in awkward corners. The newly added rules may seem a bit harsh but they're trivially satisfiable by all drivers shipping today.