better auto-detection of CSV delimiter
- files with a tsv extension are automatically detected as tab delimited
- other files parsed as CSV go through the following steps:
- if the first line contains at least 3 of the same separator, it uses that separator as a delimiter
- if the first line contains only one supported separator character, it uses that separator as a delimiter
- otherwise it falls back to treating all supported delimiters as the delimiter
supported delimiters, in precedence order:
- comma `,`
- semi-colon `;`
- tab `\t`
- pipe `|`