fileutil: Handle recent: and trash: URIs

The gs_file_get_path_cached() was rather brittle in its handling
of URIs. It would assert() when a GFile didn't have a backing path
(such as when handling trash: or recent: URIs), and didn't know
how to get the target URI for those items either.

Make sure that we do not assert() when a backing path cannot be
found, and handle recent: and trash: URIs.

https://bugzilla.gnome.org/show_bug.cgi?id=708435