Add mapAccumL and mapAccumR. Closes #632.

Reviewed by @tolmasky.
But more to the point, _why_ does it throw when called with a single argument?  Is there no reasonable case for creating a function that closes over the accumulation function but not the initial value?