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 (compilable)
build: compile all the files in the private .la

There are problems for linking the buffer-output-stream unit tests.

- The unit tests cover gtksourcebufferoutputstream.c.
- gtksourcebufferoutputstream.c is built in libgtksourceview-private.la.
- gtksourcebufferoutputstream.c uses a private function built in
  libgtksourceview-3.0.la (_gtk_source_buffer_set_as_invalid_character()).

I get this error when linking the unit tests:
undefined reference to `_gtk_source_buffer_set_as_invalid_character'

It seems that the problem is that the private.la is not self-contained.
By compiling _all_ the files in the private.la, it works. The real
library just links the private.la and other stuff, without compiling
anything.
Enable unit tests for the BufferOutputStream

Now the unit tests link fine, and 'make check' passes fine too.
Unit tests for the file loader

There is a segfault to fix.
File loading: set candidate encodings
test-file-loader: call gtk_main_quit()
File loading: get state on successful load
Update copyright year

Some of the code was modified in 2013, but the year must be the year
when the code is _released_. It will hopefully be released in 2014 :-)
Fix setup-file-saver.sh
Move some type definitions from File to Buffer

The plan is to remove GtkSourceFile, and make the FileLoader and
FileSaver public.
Make the FileSaver class public

The FileSaver cannot be used as-is, there are still modifications to do.
FileSaver: don't check if the file is externally modified

This will be done only by GtkSourceBuffer, which can keep the previous
modification time and compare it with the new one.