generalise runFoldMap implementation to runFoldLeft

generalise runFoldMap implementation to runFoldLeft then implement the former in terms of the latter.

`runFoldMap` may be too restrictive a signature, as it requires a Monoid where a Monoid isn't strictly necessary, as the zero is only called once and the accumulation is left-associative in practice.

this may lead the naïve and silly (ie. me) to do things that later cause regret and shame https://twitter.com/ezyang/status/457791221017366528