public final class ParallelMapping<I,O>
Like clojure's pmap, given a sequence of inputs obtained from an Iterable,
this Iterable will apply a function to each input ahead of consumption
in a pool of threads managed by an ExecutorService.
Does not hold onto the head of the input sequence.
The sequence can be consumed only once, i.e. only a single call to iterator() is possible.
This class ought to be an Iterator rather than an Iterable,
but it is an Iterable for convenience, so that the for loop construct works.