Add expand mode for zoom-to-fit

Normally, images which already fit in the window aren't expanded (zoomed
in) automatically. This adds an option to toggle that behavior.
Refactor some zoom state handling

Move all of the zoom widget updating, and zoom enabling/disabling, into
on_zoom_changed(). Delete the enable_zoom() function. This groups
updating the zoom display and enabling/disabling certain zoom actions
into one place.
Split zooming into multiple window actions

Instead of one "zoom" action that handles everything, split it into
separate actions. This allows disabling the zoom in and zoom out actions
when the zoom is at max or min, respectively.
Minor changes to UI and CSS files

Place the 'class' attribute before 'id' in the UI file, and rename
main.css to style.css.
Rename 'file' to 'folder' where appropriate

Technically, a folder is a Gio::File, but I think this variable name
makes the code clearer.

Also do some minor style changes and make ImageList::THUMBNAIL_SIZE
private.
Stop all tasks in ImageWorker's destructor

Cancel all tasks and wait for the work queue to stop before letting
ImageWorker be destroyed. This fixes a crash that happens when you close
the window while thumbnails are being generated: the member function
slot would persist after its instance died and segfault trying to access
instance members.