Early abort for forEach, peek multiple

Adds the capability to peek at multiple entries at the head of the
queue. I didn't have to change QueueFile, as its forEach already can
avoid reading bytes, but this optimization to abort early saves some
object creation.

While this is a breaking API change (QueueFile.ElementReader.read now
returns a boolean), I did not alter the ObjectQueue interface, which is
more likely to be implemented.
Which would be what? Allowing iteration to continue over all elements even if we didn't care about them? What about an abstract class implementing the original interface as a final method and abstract one with the boolean return type?