Have BatchIterator iterate A rather than Seq [A].

The BatchIterator should be a Scala Monad on elements (A) rather than sequences of elements (Seq [A]). The filter method provided the key insight. It was

    def filter (p: Seq [A] => Boolean)

It could only remove whole sequences. This CL changes it to

    def filter (p: A => Boolean)

It can now remove individual elements.