rust: Add a Filelog struct that wraps Revlog
Some filelog-specific logic is moved from code `rhg cat` into this struct
where it can better be reused.
Additionally, a missing end delimiter for metadata causes an error
to be returned instead of being silently ignored.
Differential Revision: https://phab.mercurial-scm.org/D11408
#require black test-repo
Black needs the real USERPROFILE in order to run on Windows
#if msys
$ USERPROFILE="$REALUSERPROFILE"
$ export USERPROFILE
#endif
$ cd $RUNTESTDIR/..
$ black --check --diff `hg files 'set:(**.py + grep("^#!.*python")) - mercurial/thirdparty/**'`