Avoid double-lookup in UdevManager::devicesFromQuery
The current code instantiates a list of Udev objects, creates a
stringlist of IDs discarding the backend devices. Then we loop through
creating a solid wrapper which then creates the Udev device by ID,
forcing udev to reload the data for that object again.
This code creates the solid wrapper directly from the original
UdevDevice list.
The isOfInterest check then needs to be added in this loop.
As it's slower than checking the type so this is done after
we check the types match.