Split the ClipScrollTree into a collection of spatial nodes and a
collection of clipping nodes. This makes it so that no unnecessary work
is done or storage is used for clipping nodes. It also allows us to
simplify certain bits of code that had to deal with both types of nodes.

During display list "flattening," positioning ClipIds are converted to
SpatialNodeIndices by consulting the ClipNode for their positioning
node. ClipIds were already converted directly into ClipChainIndices.

Eventually this change should make it to the API, meaning that we expose
the difference between the different node types. This will make it
harder to misuse the API and allow us to do away with looking up the
positioning node of clips during flattening.