The decoding functions now expose bad records

  * All of the input streams now yield `Either String a`

  * New stream transformer `onlyValidRecords` which throws an exception
    on bad CSV type conversions.