add a tree-like system to run sets of benchmarks

A system a bit similar to `OUnit`, with the ability to select only a subset of the benchmarks to run them. As each benchmark can take a significant time, it is convenient to be able to run only the ones that are relevant to some function, say, if we are trying to improve this function's performance.

There is also a small patch to `_oasis` because it wouldn't compile with a recent version of `oasis` otherwise. 
The composability is indeed not as good as before.  If one decides for this, one indeed has to change `throughput1` and `latency1` but also have a new "lifting into a tree" function for `latencyN` and `throughputN`.  Maybe the nice solution is that these functions return `samples Lazy.t` and all functions acting on samples act onn this instead??