new command bup-lscommit

This command can be used to list the contents of a (possibly unreferenced) commit
(like those frome "bup save -c")

"bup lscommit XXXXXX path/to/dir" is equivalent to
"bup ls .commit/XX/XXXX.../path/to/dir" for reverenced commits
(and "bup lscommit XXXXXX" to "bup ls .commit/XX/XXXX...")

(Actually, the parameter can also be a tree-id, like those from "bup save -t")

Signed-off-by: Tim Riemenschneider <git@tim-riemenschneider.de>
actually use "git rev-parse" as rev_parse-function

the previous implementation of "rev_parse" used "git show-ref --" for
dereferencing refs, which had some shortcomings:
- it only supports refs
  (and as a fall-back in rev_parse: full (40 char) commit-ids)
- shortened commit-ids (only the first few characters) are not supported
- neither are arguments like "mybackup@{2}", "mybackup@{5.hours.ago}",
  "mybackup^^", etc.

the new implementation actually calls "git rev_parse --verify",
so everything supported by git rev-parse (see "git help rev-parse") is
supported here, too.

Signed-off-by: Tim Riemenschneider <git@tim-riemenschneider.de>
new option "--vfs-root" for bup restore

This patch adds a new option "--vfs-root" to bup restore.
This allows to specify another object as the root of the VFS, to support
backups made by "bup save -c" or "bup save -t"

You may use any treeish object, so even tree-ids from "bup ls -s"
are possible, or reflog-references like "branchname@{2}",
"branchname@{1.week.ago}", "branchname~2" etc.
(see "git help rev-parse" or http://git-scm.com/book/ch6-1.html
for some ideas what is possible)


Since with this there is no branch/revision in the command-line,
valid_restore_path(d) is not called
(you can restore the whole backup by restoring '/')

Signed-off-by: Tim Riemenschneider <git@tim-riemenschneider.de>
new option "--vfs-root" for "bup fuse", "bup ftp" and "bup web"

This patch adds a new option "--vfs-root" to "bup fuse", "bup ftp"
and "bup web".
This allows to specify another object as the root of the VFS, to support
backups made by "bup save -c" or "bup save -t"

You may use any treeish object, so even tree-ids from "bup ls -s"
are possible, or reflog-references like "branchname@{2}",
"branchname@{1.week.ago}", "branchname~2" etc.
(see "git help rev-parse" or http://git-scm.com/book/ch6-1.html
for some ideas what is possible)

Signed-off-by: Tim Riemenschneider <git@tim-riemenschneider.de>
Testcase for the --vfs-root option

Signed-off-by: Tim Riemenschneider <git@tim-riemenschneider.de>