Created by: rmaz
This change adds an option to build swift libraries with greater concurrency. It splits the build of a target into a step to generate the swiftmodule
file and separate bitcode files for each of the source files. The second pass takes these as inputs and compiles each object file separately. This significantly improves the build parallelism as dependent modules do not need to wait for a dependency to completely build before starting, and also helps reduce the time taken to build large modules as the object files are generated concurrently.
As an added bonus it makes it possible to generate debug info correctly.