File saving

Add the public class GtkSourceFile.
Add the private class GtkSourceFileSaver, taken from gedit
(GeditDocumentSaver) and adapted to fit the GtkSourceFile API.

GtkSourceFile binds a GtkSourceBuffer with a GFile. There are properties
for common things between the saving and loading. Specific saving
settings are passed as flags in a function parameter.

GtkSourceFile stores the modification time when a file is saved (and it
will also get the modification time when the file is loaded). See the
GTK_SOURCE_FILE_SAVE_IGNORE_MTIME flag, and the
GTK_SOURCE_FILE_ERROR_EXTERNALLY_MODIFIED error. Currently, when saving
the file for the first time, the mtime is not known, so the IGNORE_MTIME
flag is forced.

Differences from gedit:
- gedit uses three signals: save, saving (to report progress) and saved.
  gsv uses the GIO conventions for async operations (also to report
  progress).
  The FileSaver uses a GTask internally.
- for the ensure-trailing-newline setting, gedit uses GSettings, and gsv
  has properties.
- for creating backup before saving, gedit has a GSettings, gsv has the
  CREATE_BACKUP flag in GtkSourceFileSaveFlags. gedit has also two flags
  for backups in the GeditDocumentSaveFlags enum: IGNORE_BACKUP and
  PRESERVE_BACKUP. There is a comment for the latter saying that it is
  needed for autosaving, but CREATE_BACKUP seems sufficient.
- gedit has the _gedit_document_set_mount_operation_factory() private
  function, it is used internally by gedit when creating a
  GeditDocument. gsv must make this function public. And it is a pity to
  have this function only because it is better to set the parent GtkWindow
  to a GtkMountOperation...

See also this mail thread:
https://mail.gnome.org/archives/gedit-list/2013-December/msg00006.html

And the bug report:
https://bugzilla.gnome.org/show_bug.cgi?id=721016