localrepo: make "undofiles()" return list of tuples "(vfs, relative filename)"

Before this patch, "localrepository.undofiles()" returns list of
absolute filename of undo files.

This patch makes it return list of tuples "(vfs, relative filename)"
to access undo files via vfs.

This patch also changes "repair.strip()", which is the only user of
"localrepository.undofiles()".
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs

Before this patch, filename specified to "changegroup.writebundle()"
should be absolute one.

In some cases, they should be relative to repository root, store and
so on (backup before strip, for example).

This patch adds "vfs" argument to "writebundle()", and makes
"writebundle()" open (and unlink) "filename" via vfs for relative
access, if both filename and vfs are specified.
repair: make paths in "_bundle()" relative to ".hg"

This patch makes paths below in "_bundle()" relative to ".hg":

  - backup directory ("strip-backup"), and
  - bundle file under backup directory

"vfs" is passed to "changegroup.writebundle()" to use relative path
directly.

This patch applies "vfs.join()" on the value returned by "_bundle()",
because the caller expect it to return absolute path.

This will be changed by succeeding patch changing the caller side.

--HG--
extra : amend_source : 1ceb4c4f447e60c65e0ed008c3f3dd50961dafbe
changegroup: add "vfs" argument to "readbundle()" to pass relative filename
repair: make "strip()" treat bundle files via vfs

This patch makes "repair.strip()" treat bundle files via vfs.

This patch also avoids applying "vfs.join()" on the value returned by
"changegroup.writebundle()", to get relative path from "_bundle()".

--HG--
extra : amend_source : 12624f82d36d2875ac7b557397427ae705f1ef50
vfs: add "mkstemp()"
bundlerepo: treat temporarily extracted bundle file via vfs
shelve: add "applybundle()" to invoke "readbundle()" with relative path and vfs

"applybundle()" also includes "addchangegroup()" invocation to
encapsulate "vfs.join()" inside it.

--HG--
extra : amend_source : 4bbea8666077f5c0ebf4e7954795344a564c0ac7
shelve: add "writebundle()" to invoke "writebundle()" with relative path and vfs

--HG--
extra : amend_source : 2f2a1a8da3404cc710308dae506cb7a687ce42fc