narrow: fix crash when restoring backup in legacy repo

Authored by martinvonz.

Description

narrow: fix crash when restoring backup in legacy repo

Using --addremove when committing in an old repo (before we started
keeping .hg/narrowspec.dirstate) results in a crash. The test
case modified in this patch would crash like this:

abort: $ENOENT$

The issue is that when the dirstateguard is aborted, it tries to
restore the backup of .hg/narrowspec.dirstate. However, since we were
in an old repo, that file did not get created when the dirstateguard
was created. Note that the dirstateguard is not used unless
--addremove is passed.

This patch fixes the bug by making restorewcbackup() not fail if the
backup doesn't exist. I also made clearwcbackup() safe, just in case.

Differential Revision: https://phab.mercurial-scm.org/D5634

Details