* clutter/clutter-model-default.c:
(clutter_model_default_get_iter_at_row),
(clutter_model_default_insert_row): Fix off-by-one errors
(clutter_model_default_class_init):
(clutter_model_default_remove_row): Move the actual removal of the
row to...
(clutter_model_default_row_removed): ... the signal class handler
of ::row-removed; this way, signal handlers connected to
::row-removed will get a valid iterator, while signal handlers
connected to ::row-removed with the AFTER flag will get an updated
model
* clutter/clutter-model-default.c:
(clutter_model_default_iter_next),
(clutter_model_default_iter_prev): Do not instantiate a new
iterator, and update the passed one instead, as we say we do
in the documentation. This avoid leaking tons of iterators.
* clutter/clutter-model.[ch]: Update the documentation.
* tests/test-model.c: Prettify some output.
* clutter/clutter-behaviour.c:
(clutter_knot_get_type): Use the I_() macro.
* clutter/clutter-model.[ch]: Make ClutterModel and ClutterModelIter
abstract classes; also, provide more virtual functions inside the
ClutterModel vtable, to allow subclasses and language bindings to
override the entire ClutterModel using other/native data types
to store the rows.
* clutter/clutter-model-default.[ch]: ClutterModelDefault is a
default implementation of ClutterModel and ClutterModelIter using
GSequence.
* clutter/Makefile.am:
* clutter/clutter.h: Build glue for ClutterModelDefault.
* tests/test-model.c: Update for constructor changes.
* tests/test-shader.c: Fix a typo.