internal rename: readBuffer => read_buffer. We don't use snake case.
internal cleanup: excise is_file_readable.

This was an awful, ancient function. This is exactly what the
isreadable(path) function does, so there's no need for this. Also,
in most of the places we were calling it, skipping over files that
exist but are not readable is unhelpful – it would be better to
fail and let the user know that a file that was in the lookup path
and *should* be readable isn't. Arguably, we should even weaken the
test to just `ispath` and fail if the thing exists but is not a
regular file and is, say, a directory unexpectedly.