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.
Basically, yeah, QueueFile has provisions for "not reading all the bytes" so I *could* make FileObjectQueue just return early in this case.

I may be too dense to get the abstract/interface jockeying; that'd require a new QueueFile method, then, right?