Optimize fieldWith by switching to more light-weight types in RowParser

Function fieldWith was accessing a row result based on a column index
that was updated in a State monad.  Each field was read using !!
operator.  List 'length' was also being called to figure out how many
columns the input has.

Optimize the RowParser type (and fieldWith) by instead storing number
of columns in the Reader and instead of indexing the row fields with
!!, advance the list with tail on every column iteration.

This gives us an almost 20% performance boost in rows/sec.

Fixes #23