shelve: also create class representing whole directory of shelves
It's a little annoying to have to create and pass in a vfs into
`listshelves()`. This patch attempts to start addressing that by
creating a class that represents a directory containing shelves (the
directory can be either `.hg/shelved/` or `.hg/shelve-backup/`).
Differential Revision: https://phab.mercurial-scm.org/D9743
#require black test-repo
$ cd $RUNTESTDIR/..
$ black --config=black.toml --check --diff `hg files 'set:(**.py + grep("^#!.*python")) - mercurial/thirdparty/**'`