Per the FreeDesktop Desktop Entry spec, the Icon field can be either
an icon name (looked up in the theme) or an absolute path to an image.
Previously, all Icon values were passed to `widget::icon::from_name()`,
which only works for icon names.
This adds a `desktop_icon_handle()` helper that checks if the path is
absolute and exists, using `widget::icon::from_path()` for absolute
paths and `widget::icon::from_name()` for icon names.
Fixes: https://github.com/pop-os/cosmic-epoch/issues/2697