**Clean-up**
Normally you use ``c.ReduceFuncs.Sum(c.this())`` to reduce something, but it's
possible to use custom reduce functions like this:
* ``c.reduce(lambda x, y: x + y, c.this(), initial=0)``
* ``c.reduce(c.inline_expr("{} + {}"), c.this(), initial=0)``
``c.reduce`` used to support ``prepare_first`` parameter which was adding
confusion. Now it's dropped.