Refactor preview handling
The main motivation is to better separate the codepaths for the internal and external preview. This will make it easier to move away from KMimeTypeTrader since then the internal preview codepath will use KPluginMetaData instead of KService while the external one will still use KService. Extract the finding and opening of both the internal and external preview as well as the plain text message box into separate functions. That makes the logic of ArkViewer::view easier to follow.