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 and render states to per pipeline.
This ensures the compositor doesn't composite for an epoch until
every *pipeline* in the epoch is finished rendering.

For iframes it fixes a bug where the compositor didnt wait on the
child pipeline ready state before compositing the window.

Split SetLayerClipRect into two messages, SetLayerOrigin and
SetLayerSize. This is because only the parent layout task knows
the iframe position and only the iframe layout task knows the iframe
size. The parent layout task sets the iframe origin and the iframe
layout task sets the iframe size.

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.

Second time around...
@zwarich , CC @mrobinson 
This method is a little strange now and I'm not sure I understand what's going on. It used to update the layers if they existed or create them otherwise, thus the name create_or_update_root_layer. Now it seems to update the root layers in either case. Shouldn't the method be renamed to update_root_layer and the need_new_root_layer case removed?