Bug fix to the EOF handling and also a simplification.
We incorrectly reported the lack of an EOF block when checking a
sub-range, where we get an expected EOF at the end of range but this
isn't due to a file EOF.
Simplifying this the API now uses scram_eof() returning 0 for false, 1
for expected eof and 2 for unexpected eof (no EOF block).