Allow a limit to be passed to file::read_utf8

Currently the API does not allow the caller to know that the data was actually truncated.
Limit QuickLook preview to the first 20 KiB of the file

This was suggested in pull request #1226. Ideally we would make the limit flexible, e.g. see how much we can generate in 1-2 seconds, but that is a non-trivial change, so the fixed limit will do for now, and while truncated data is suboptimal, it’s better than being killed due to QL manager’s timeout.