Added SourceOptimizedCompositeXYProjector

The existing CompositeXYProjector populates a target in the target's
natural iteration order. However, as the components being composited are
coming from the source, this can lead to worst-case scenario
iteration.

In addition to the iteration order itself, because the composites come
from the source, the source is accessed multiple times for each position
of the target that's accessed (N times, where N is the number of
composite components). To optimize for this, N cursors are created. One
is designated the lead cursor to determine iteration order, and the
others are localized at each iteration step.