Complete rewrite.

Deleted Data.Renaming and replaced it with Control.Monad.FunctionGraph.

Data.Renaming was a stack-based approach, whereas
Control.Monad.FunctionGraph is based on Kleisli arrows and is much
better behaved: instead of a stack of values, data is put through a DAG,
where each edge access its and only its given inputs, not a whole,
ill-defined stack.