Cabal: Compat.Exception: Export mask and mask_.
JobControl: Use Chan-based BoundedResource instead of Semaphore,
and move it to Cabal.

This removes cabal-install's dependency on stm.
Add a test for JobControl
LocalBuildInfo: Add some haddocks to componentsInBuildOrder etc
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.