Better CSV support

This adds a new CSV loader/exporter for Framian. This supports a feature rich set of formatting options - including row-delimiters, empty/invalid markers, and quote escapes. It also allows auto-detection of all or some of the formatting options (excluding header detection, which was flakey). The parser itself parses in chunks and can read the data from a stream of bytes, rather than all-at-once.

This is mostly used in a Vector of Either, so I guess it will end up being boxed most of the time. Do you think we could make it a type alias instead?