trivial: Fix typo in code comment
Make the project licenses hyperlinked to the SPDX site
Never put 'Complicated' in the license field
shell updates: Remove a forgotten debug statement
shell updates: Remove NULL checks around g_list_free

NULL is a valid GList; no need to special case it.
shell updates: Instantiate a new update dialog each time
shell: Remove unneeded g_clear_object calls

We just created and 0-initialized the BackEntry; no need to clear the
members again.
update dialog: Remove a local variable
update dialog: Use a GtkStack instead of manually hiding widgets

This paves the way for extending the dialog with additional modes.
update dialog: Draw a separator between listbox items
update dialog: Implement better back button state tracking

This adds a GQueue based stack for keeping track of the previous dialog
states.
update dialog: Rename a function
update dialog: Move the installed updates display here

... as per the design guidance.

https://bugzilla.gnome.org/show_bug.cgi?id=727981
app widget: Don't reserve space for buttons in the update viewing mode

There are no buttons in that mode and we can put the recovered screen
estate to better use.
app widget: Avoid a hardcoded width request

Instead of using a hardcoded width_request for name_label, make sure it
is added to a size group in all the callers. This makes it appear nicer
in cramped spaces, such as the installed updates dialog, where 164 px
size request for the name label can look out of place.
app widget: Adjust spacing
shell updates: Rip out the "updated" mode

The replacement is now in the updates dialog.
Rename GsAppWidget to GsAppRow

... and derive it from GtkListBoxRow instead of GtkBin.
Break out common code for a list of updates in a separate class

To share code between GsShellUpdates and GsUpdateDialog, break out a new
GsUpdateList widget.