Backporting Geoserver's CSVDataStore updates to Geotools

Adding the updated CSVDataStore to geotools. The code is nearly identical to geoserver's fork, with the exception that the test cases are updated to use geotools' test data. The goal is to remove the duplication of this data store, so in the future geoserver can pull in the module as a dependency.