Extracted a number of smaller submodules from the unpleasantly large /proc/stat module

Looking for ways to refactor some almost identical code across samplers

Also started work on /proc/meminfo sampling, but that is for now very preliminary.

The middle-term plan after that is to also add some storage activity from /proc/diskstats and network activity from /proc/net/dev. Then, if all of this exhibits satisfactory performance, thus confirming that there is something interesting to be done with high-rate procfs sampling, finish interface cleanup, publish the sampler crate, and start working on a GUI.

Picking up from where @jdub left off on incremental compilation in gcc-rs. I added support in the incremental branch for caching (some) build info, which brought the subsequent build time on a large, C-heavy project I’m working on down to under two minutes when rebuilding gcc-rs itself. Incremental compilation has been a long time coming, so hopefully we can land it soon!

I’m working on applicative_functor - adding applicative functor’s interface to existing monadic entities in Rust’s standard library. However, because of the lack of Higher-Order Types, my trait can’t be generic enough over the type returned by the ap method, so apparently I have to stay with OptionApplicativeFunctor for ap returning Option, etc.

I did fix a bug in the sampler code of rs_pbrt, so now I get a nearly perfect match between the C++ and Rust version. The remaining (5 of 65536) pixels which render differently, are probably caused by the usage of HDR (OpenEXR) on the C++ side.

One of them is for Luxrender, which is based on an earlier version of PBRT, so that should be doable. To get the direct lighting working I probably just have to work on the area light code for meshes. Global illumination (GI) would be the next step, but that’s too much for this week