Add a provisional schema for app folders

This will eventually be defined in a gnome-shell
schema. For now, we just use a key in our own schema.

The type is a dictionary that maps folder ids to lists
of app ids.
Add a GsFolders object

Unlike categories, we use a single, singleton object here that
wraps the app-folders setting and offers an api to make changes
to this setting.
Show folder in GsAppWidget

We show the folder name on a gray background.
Add a checkbox to GsAppWidget

Make it possible to show a checkbox at the very left of the
app widget. This will be used to implement selection mode for
the list of installed apps.
Add a dialog to edit app folders

This will be used in subsequent commits.
Add a selection mode to the installed list
Add a selection bar

When the installed list is in selection mode, show a bottom bar
that allows to bring up the app folder dialog.
Reset selection mode when entering the installed list

Otherwise, we end up with the header bar reset, but still
checkboxes in the list.
Make gs_app_widget_refresh public

The GsFolders approach requires us to refresh app widgets
'from the outside', so make gs_app_widget_refresh() public.
Trigger refresh of selected rows after changing folders

The selected rows may get a new folder when the app folder
dialog is done, so refresh them.
Protect the folders functionality with an envvar

Until gnome-shell gets switched to use a setting like
we do here, the folders functionality is not really useful,
so don't expose it in the UI unless the TEST_FOLDERS
environment variable is set.