Base class for FeatureInputStreamReaders.
Handles the details of buffering the stream of features
to allow for lookahead.
This allows subclasses to implement the simpler semantics
of "return null if no more features".
Subclasses need to define readNext and close.
They also need to set the featureSchema instance variable.