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.
229 jobs for jenkins_vulkan