flatpak: Use FlatpakTransaction to install, remove and update

This ensures we will get the same set of extensions and runtimes as the flatpak
CLI tool, and allows us to make the plugin considerably simpler. Rather than
using the plugin cache for the transaction, add each app and runtime being
processed to a per-transaction cache which cleans up the cache model a lot.

This allows us to remove gs_app_{g|s}et_update_runtime(); nobody every properly
understood what this was doing, and it's no longer required.

The counterpart matching also gets cut out; it was a huge layering violation
and didn't work very well when there were two FlatpakInstallations with the
same scope. If the GsApp scope is unknown, ask each GsFlatpak instance to
refine the state until it returns without error.

This also allows the runtime to use a different FlatpakInstallation than the
application itself.
1 job for <span class="ref-name">wip/hughsie/FlatpakTransaction</span> in 4 minutes and 45 seconds (queued for 5 seconds)
Status Job ID Name Coverage
passed #63222