Logically the method pushes a nested scope on top of a given scope
because the "up" pointer sequence forms a stack independent of any
other branches of the tree.
This will be used to contain most of the content of the cmState
in several different trees. Refer to the BuildsystemDirectory
state from the SnapshotData state. Currently these trees have
the same structure, but that will change when we have more snapshot
types.