This impacts $geoNear and $unpackBucket stages.
Until now $unpackBucket was the only stage that can appear only once. With introduction of the $changeStreamSplitLargeEvents stage, both stages should use the same constraint enforcement mechanism.
Until now $geoNear stage was the only stage using special position requirement 'kFirstAfterOptimization'. $changeStreamSplitLargeEvents needs yet another special position check after optimization, so we will generalize this approach.