Distribution.Simple.Setup: Clean up parameter parsing list syntax
LocalBuildInfo: Add some haddocks to componentsInBuildOrder etc
Cabal: Compat.Exception: Export mask and mask_.
Cabal: Copy-paste JobControl and Compat.Semaphore from cabal-install
LocalBuildInfo: Add withComponentsInBuildOrderParallel
Refactor build (preparing for parallel build)
Add -j / --jobs flag to cabal build
Build: Build executables / tests in parallel.

We first build the library, and can then build everything else in parallel, since executables/tests cannot depend on each other.

This is important because if they did, we would we writing and reading files at the same time.
Add TODO
Put JobControl into exposed-modules
Add a test for JobControl
Add BoundedResource
JobControl: Use Chan-based BoundedResource instead of Semaphore.

This removes the dependency on stm.
Remove unused Distribution.Compat.Semaphore