We can define exceptions to handle targets with sources that either
have unique arguments or are unbuildable. Eventually this ought to
allow us to ditch the "no outside-target source file" rule, but I'm
leaving that be for now since ideally we'd handle automatically
splitting up umbrella Clang targets such as `stdlib` such that e.g
`swiftCore` is its own buildable folder instead of an exception.
This was originally a separate library since it was copied directly
from the legacy SwiftPM library. However it's since been changed a
bunch, and ought to be able leverage SwiftXcodeGen utilities such as
RelativePath. Fold it into SwiftXcodeGen.
I considered splitting out the utility code from SwiftXcodeGen into
a new library, but unfortunately that currently regresses performance
(even with max CMO). The module organization doesn't really currently
matter since we don't expose any products.