Move traverseS_ to Foldable

AFAICT, `traverseS_` is just a specialized variant of `traverse_`, which is defined on `Foldable`. But `traverseS_` currently requires `Traverse`.

Redefining `traverseS_` in terms of `traverse_` takes advantage of the fact that `traverse_` discards intermediate results. The current implementation of `traverseS_` appears to compute the whole result (which could be very large in the case of, say, traversing a `Stream`), discarding it only at the very end.

This patch also adds syntax for `traverseS_` to `FoldableOps`.