Move logic for tiling from Servo into rust-layers

Pull in the quadtree implementation from Servo and rework the way that
tiles are stored in the layer tree. Instead of storing tiles in-tree,
simply hang them off of ContainerLayer separately. Also have
ContainerLayer templatized to hold arbitrary data, which will prevent
Servo from having to mirror the tree using Servo CompositorLayers.
This `with_common` pattern is not really recommended anymore. Instead I'd change it to:

    pub fn common<'a>(&'a self) -> RefMut<'a,CommonLayer<T>> {
        self.common.borrow_mut()
    }