Support Record Separator for CSV

I isolated the logic for treating arbitrary strings as record separators
to allow for any line ending character sequence. I made sure the writers
were putting record separators at the end of lines even if there aren't
additional records. I also check that disposed writers throw errors when
the accessed after being disposed.