Add a cumulative sum to KeyedList

Not sure where the best place to put this is (or where to add tests) but this is a method for taking cumulative sums that doesn't require all the entries to go through a single scanLeft. It accomplishes this by

- taking an ordered partition of the entries
- summing up the entries in each partition
- scanning through the sums (which does require going through a single scanLeft so there can't be too many partitions)
- then scanning through each partition starting from the cumulative sum of the prior partition (so each partition can't be too big either)

This has been compiled against master.
more lines in comment, so its not as wide for github diff reading