Draft of code for new csvread/csvwrite

As discussed in #1893, the DataFrames codebase has working functions for reading and writing CSV files. This code, with small changes, has been stable in DataFrames for a little while now.

This pull request starts the process of migrating that CSV I/O code into Base. This code, when placed inside of Base, causes a segfault when trying to read a CSV file. The new version of `csvwrite` works and provides better results than the previous version, but the new version of `csvread` clearly needs some review from someone who understands Julia's core better than I do. If it can be made to work, it will allow Julia to read an Array of Strings from much more complex CSV files than would be supported by `dlmread`.