Redmine#5624: readcsv(): new function with acceptance test

see https://dev.cfengine.com/issues/5624

Simple function to properly parse a CSV file into a data container.  Does appropriate CSV parsing, especially escaped quotes.
Defer creating this until after fopen() has succeeded; no need for it before then, so you'll save some of the clean-up code when fopen() fails.  It can be just before the for(;;) of the parsing loop.