Qt6 insists on that. We can do this either by including the moc files,
or by including the corresponding headers in the header defining the
properties, the former seems cleaner.
Allows us to run executables, e.g. downloaded installers.
Also moves some of the logic to the C++ side.
It also indicates "openwith" Kiosk restriction in the UI now by hiding
the button.
For example, show "Open with Gwenview" with its icon after downloading
an image file, and "Open with..." in case there is no associated application.
While at it also give an icon to the "Open Containing Folder" button.
Also, port it to use a `KIO::mimetypeJob` to make it asynchronous
and work on remote locations. To make for a less jarring transition (icon suddenly
appearing, causing text reflow and the dialog to resize), take an initial
guess about the mimetype using the file extension while the job is running.
Furthermore, hide the "Open" actions in case the job fails which likely means
the file doesn't exist anymore or cannot be accessed, and as as result
probably cannot be opened anyway.