Add impls for Error and FromError traits.
Removes the convenience `collect` function.

I wrote this function back before I realized that `Result` implements
`FromIterator` for `Iterator<Result<T, E>>` where `T: FromIterator`.

So code that looks like:

    let rows = csv::collect(rdr.records()).unwrap();

Should be replaced with:

    let rows = rdr.records().collect().unwrap();

You may need to insert type annotations, e.g.,

    let rows = rdr.records()
                  .collect::<Result<Vec<_>, _>>()
                  .unwrap();

[breaking-change]