xform: experiment with a tail recursive definition of `reduce`
xform: experiment with a tail recursive definition of `reduce`

We provide a tail recursive implementation of `reduce` to explore how
good different compilers deal with it.  Surprisingly, Clang 3.6 on Linux,
which generates quite suboptimal code with the for-loop, generates quite
better code with this version (even though still not optimal).  GCC 5,
which generates optimal code with the for-loop, generates decent but not
optimal code with this tail-recursive implementation.

For all this, the for-loop is still the default implementation.

AbletonAG/atria,respu/atria,Ableton/atria,Ableton/atria,lyrl/atria,dodheim/atria,shaunstanislaus/atria,manashmndl/atria,respu/atria,dodheim/atria,kod3r/atria,shaunstanislaus/atria,iankronquist/atria,kod3r/atria,shaunstanislaus/atria,Ableton/atria,iankronquist/atria,lyrl/atria,manashmndl/atria,respu/atria,AbletonAG/atria,iankronquist/atria,bowlofstew/atria,lyrl/atria,dodheim/atria,AbletonAG/atria,bowlofstew/atria,bowlofstew/atria,kod3r/atria,manashmndl/atria