Implement parallel compilation

This commit implements the -j flag in the `cargo_rustc` module, using the
primitives from the other commits. The default parllelism is 1 (like with
make).

This change also brings proper freshness propagation instead of the hokey logic
of once something is compiled, "compile everything to the right as well".
Good point! I've added some extra logic to hopefully only print this when necessary, and for now let's see how far printing on error gets us and we may be able to collect more in the future.