dirstate: report bad subdirectories as match.bad, not just a warning (BC)
This seems simpler and more correct.
The only test coverage for this is test-permissions.t when it says:
dir: Permission denied
$ "$TESTDIR/hghave" execbit || exit 80
$ hg init repo
$ cd repo
$ echo foo > foo
$ chmod 644 foo
$ hg ci -qAm '644'
$ chmod 755 foo
$ hg ci -qAm '755'
reverting to rev 0
$ hg revert -a -r 0
reverting foo
$ hg st
M foo
$ hg diff --git
diff --git a/foo b/foo
old mode 100755
new mode 100644
$ cd ..