Restructure compositor layers to work with iframes

When a frame is selected via set_ids, a tree of root compositor
layers is also created, matching the tree of pipelines in the frame.
This decouples the chronological ordering dependency for parent frames
and child iframes sending CreateOrUpdateRootLayer &
CreateOrUpdateDescendentLayer messages.

Change the Compositor ready states to per pipeline and change the
compositor render states to per layer+epoch. This ensures the compositor
doesn't composite for an epoch until *every* layer in the epoch is
finished rendering.
Without tracking per layer the position_fixed_overflow ref test tends to
fail for machines under heavy load. For iframes it also fixes a bug
where the compositor didnt wait on the child pipeline ready state
before compositing the window.

Gotchas:
* layout task or script task failure on exit ("task '' failed at sending
  on a closed channel"), this happens if the child iframe shares the
  same script task as the parent and can be avoided by adding the
  sandbox attribute to the iframe.

Other changes:
* Inline set_clipping_rect in compositor.rs
* Commented out ref test simple_iframe.html fails on os x