Fix reducer/combiner cleanup

An error in the order of the cleanup in `ReducerProxy` caused `#cleanup` to never be called in reducers and combiners. This change adds test cases to the integration spec and fixes the issue.

I welcome more elegant ways to signal that the setup and cleanup methods have been called than using `puts`. I was thinking maybe `ctx.write` could be used with some special words, but then it will litter the actual job output instead.