CSV_DDesc tweaks

Usually we depend on the csv module to automatically detect/sniff the
format of the csv file (e.g. what delimiter and line separators are used)

We still do this but now we also allow users to override the
automatically detected settings with keyword inputs.

This required us to stop using the old-style classes in csv.dialect and
instead use dictionaries.  This is, I think, much cleaner, but is also
less standard (if csv.dialects are standard)