The usual implementation of the header func adds headers to all rows but
the first one. If the first row then gets removed, the second row
becomes the first and keeps its header, since nothing ever removes it.
Fix this by also removing the header if we are looking at the first row.
https://bugzilla.gnome.org/show_bug.cgi?id=743441
GtkListBox doesn't implement GtkScrollable so it needs to be added to
a GtkViewport. Instead of having to do this in all .ui files, add a
new helper function to setup the widget tree correctly.
https://bugzilla.gnome.org/show_bug.cgi?id=732175