Divide and conquer when appending in runFoldMap

For most monoids, this won't make much of a difference, but for, eg,
Vector monoid used in runLog, this will bring down the cost of an Emit
to O(n) instead of O(n^2) due to a cruddily implemented ++ in Scala's
Vector.

A simple test case:

Process.emitSeq[Task, Int](List.fill(100000)(1)).runLog.run

Before this patch I waited 30sec, then killed SBT. After this patch it takes < 1s.