Closely align the reader and the iterator

- In the filtered case, we can't know how many records will need to be
  included, but it won't be the number from the row group. Use the
  record reader to read a record and use its null-ness for the hasNext test