Honour CLUTTER_ACTOR_NO_LAYOUT more efficiently
If an actor sets flag CLUTTER_ACTOR_NO_LAYOUT then that means it
is (or should be) unaffected by queue_relayout calls in its children.
So we can avoid propagating queue_relayout all the way up to the stage
and avoid a full stage relayout each time.
But those children whose parent has CLUTTER_ACTOR_NO_LAYOUT still need
to be allocated at some point. So we do it at the same point where it
happened before. Only we now queue a shallow relayout so the allocate
run on the next frame doesn't need to descend the whole actor tree anymore.
Only a subtree and hopefully very small.
For free-floating and top-level actors this provides a measurable
performance benefit. According to Google Profiler, calls to
_clutter_stage_maybe_relayout are now so cheap that they no longer show
up in performance profiles.
Related to #590 (closed)