Don't use the unsafe iterator in the benchmark.

(The unsafe iterator is my dirty little secret for now.)
Fix an ordering bug.

This occurs when the CSV data has one row, the caller says it has no
headers and the caller asks for the headers before any calls to a
record iterator.

The correct behavior is that the iterator returns the first row (since
it isn't a header). But the previous behavior was that the iterator
returned 0 rows because it checked whether the parser was done or not
before checking for the special first-row-case.