shell: Use GQueue for the back entry

This makes the back button handling similar to what's done in
GsUpdateDialog.
shell: Avoid hiding and immediately reshowing the back button

Otherwise gtk+ gets confused and requires an enter/leave event to make
the button work again.

https://bugzilla.gnome.org/show_bug.cgi?id=733728
doap: add <programming-language>