actor: Cache per-actor transforms
actor: Cache per-actor transforms

Previously each time we needed to retrieve the model transform for a
given actor we would call the apply_transform vfunc which would build up
a transformation matrix based on the actor's current anchor point, its
scale, its allocation and rotation. The apply_transform implementation
would repeatedly call API like cogl_matrix_rotate, cogl_matrix_translate
and cogl_matrix_scale.

All this micro matrix manipulation APIs were starting to show up in the
profiles of dynamic applications so this adds priv->transform matrix
cache which maintains the combined result of the actors scale, rotation
and anchor point etc. Whenever something like the rotation changes then
then the matrix is marked as dirty, but so long as the matrix isn't
dirty then the apply_transform vfunc now just calls cogl_matrix_multiply
with the cached transform matrix.

GNOME/clutter,djdeath/clutter-multithreaded,djdeath/clutter-multithreaded,kerrickstaley/clutter-vala,djdeath/clutter,GNOME/clutter,collects/clutter,heysion/clutter-clone,djdeath/clutter-android,djdeath/clutter-android,djdeath/clutter,djdeath/clutter-multithreaded,Distrotech/clutter,djdeath/clutter,Distrotech/clutter,collects/clutter,spatulasnout/clutter,djdeath/clutter,kerrickstaley/clutter-vala,spatulasnout/clutter,dlespiau/clutter,djdeath/clutter-android,collects/clutter,jigpu/clutter,GNOME/clutter,heysion/clutter-clone,spatulasnout/clutter,dlespiau/clutter,jigpu/clutter,heysion/clutter-clone,djdeath/clutter-multithreaded,kerrickstaley/clutter-vala,collects/clutter,djdeath/clutter,GNOME/clutter,ebassi/clutter,Distrotech/clutter,Distrotech/clutter,djdeath/clutter-android,ebassi/clutter,ebassi/clutter,djdeath/clutter-android,jigpu/clutter,spatulasnout/clutter,collects/clutter,dlespiau/clutter,jigpu/clutter,Distrotech/clutter,Distrotech/clutter,kerrickstaley/clutter-vala,ebassi/clutter,heysion/clutter-clone,heysion/clutter-clone,jigpu/clutter,djdeath/clutter,spatulasnout/clutter,GNOME/clutter,ebassi/clutter,jigpu/clutter