readdlm improvements

Used `mmap` to read files.

`readdlm` and `readcsv` now take optional named arguments to:
- not use `mmap`
- read header (and return a tuple of header and data)
- ignore invalid characters

In the process, introduced `convert` variants for creating `ASCIIString` and `UTF8String` from byte arrays while replacing invalid character sequences with a new (potentially empty) sequence.