rhg: Propagate permission errors when finding a repository
The Rust standard library has a `Path::is_dir` method that returns false
for any I/O error (such as a permission error),
not just "No such file or directory".
Instead add an `is_dir` function that returns false for non-directories
and for "No such file or directory" errors, but propagates other I/O errors.
Differential Revision: https://phab.mercurial-scm.org/D11230
pager.pager=p0 # $TESTTMP/sysrc:4
ui.editor=e1 # $TESTTMP/userrc:2
pager.pager=p2 # $PAGER
ui.editor=e1 # $TESTTMP/userrc:2