Enforcing that DependencyNode::affects() can only be passed leaf plugs, and that it can only return leaf plugs in the output. Dirtiness is still signalled on parent CompoundPlugs as a convenience to observers, but the actual specification of dependencies is enforced to only take place at the leaf level because that is the only level computations may take place at. This fixes bugs where the various UI elements wouldn't always update correctly because dirtiness wasn't being propagated fully. These bugs had become much more severe following the addition of the preprocessor node inside the SceneView because the preprocessor itself wasn't properly propagating dirtiness.