The Make_reduce functor is used to generate a reduction function for shapes.
It is parametrized by:
an environment and a function to find shapes by path in that environment
a function to load the shape of an external compilation unit
some fuel, which is used to bound recursion when dealing with recursive shapes introduced by recursive modules. (FTR: merlin currently uses a fuel of 10, which seems to be enough for most practical examples)