prefer a named tuple over a dict for carrying around the iteration context, because I want to pass it as a single argument to the render methods.
`extra` is now available to the render methods, and is filled with a IterationData object containing everything we know about the state of the region loop.