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.
Should use ``safe_fopen``, which will avoid symlink races and such.