Add GtkSourceEncoding API

The code comes from gedit, in the purpose of making the gedit source
code more reusable.
Add GtkSourceBufferInputStream private class

Taken from the gedit source code, GeditDocumentInputStream.
Unit tests for the buffer input stream
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
Remove GTK_SOURCE_FILE_ERROR_CANT_CREATE_BACKUP (unused)

Some of the other errors will be used by the loader.
Add setup-file-saver.sh script
GtkSourceBufferOutputStream
Unit tests for the buffer output stream

The unit tests compiles, but doesn't link. I'll see if adding the file
loader code helps. So for now it is disabled.
GtkSourceFileLoader (not finished!)