Move traverseS_ to Foldable

AFAICT, `traverseS_` is just a specialized variant of `traverse_`, which is defined on `Foldable`.

Redefining the former in terms of the latter takes advantage of the fact that `traverse_` discards intermediate results. The current implementation of `traverseS_` appears to compute the whole result, discarding it only at the very end.