1. `File` does not have a range interface, `LockingTextWriter` does
2. `LockingTextWriter` does some things with strings to put them in the `FILE*`'s orientation
3. Since we know it doesn't make sense to write pointers to files, we can have `toFile` write arrays and ranges of any number of dimensions.