require csv from core_ext

core_ext is for convenience, so conveniently require
the csv lib too
accept io argument to to_csv

and stream output to io one line at a time.

to_csv() with no args returning string implemented
in terms of to_csv(io)
extract CsvWriter from ArrayToCsv
accept file path argument to to_csv

implemented in terms of to_csv(io)
update readme for writing to file or io