UndoManager: start a new implementation

The code was quite horrible, with functions that do the reverse of what
they say they do, like action_list_prepend() that does an append on the
GPtrArray. Or 'next_redo', which is an index that begins at the end (!)
of the array.

Group of actions should be modelled into the data structure itself,
instead of having 'order_in_group', 'actions_in_current_group',
'num_of_groups', etc.

This new implementation will just try to make the code cleaner, with a
better data structure (a GQueue of GQueues). It won't add new features,
or make the Action more extensible (like a "search and replace" action
which would be different from a [delete/insert]). If one day GTK+ or GIO
has an Undo/Redo API, it will be the time to make the undo/redo more
powerful. And at that time, having a cleaner implementation will make
things easier and more enjoyable.

A benchmark will be written to ensure that performances with the GQueues
are as good as with the GPtrArray.

See also:
https://wiki.gnome.org/Projects/GtkSourceView/UndoManagerRework