--graft command for bup-index

Draft implementation of a graft function for bup index.

Adds a --graft command to bup-index to allow specifying the graft paths
of files during index creation, and the relocation of common directory
trees without marking every file as updated.

Grafts are saved as indexfile.grafts in BUP_DIR.
Elaborate graft storage system.

(its not very good)
Full support for --grafted indexes.
--regraft functionality for bup index.

This patch adds support for regrafting only modified paths to a new real
location in the index.
update gitignore
Minor .gitignore update (revert to previous entries)
Really minor change.
Add documentation for --graft, --regraft index commands.
Update tmetadata.py for with new / root behavior

Grafted indexing does not store metadata for paths not explicitly
indexed. This means that '/' is interpreted as having blank metadata.

The test should therefore confirm that '/' in this scenario always has
blank metadata since it is not explicitly indexed, and arbitrarily
picking up FS '/' metadata doesn't seem right.
Fix dirp loop bug.

dirp was being calculated wrongly, which led to the metadata for real
paths being squashed. The test has been reverted to its original state
and the bug fixed.
Revert change to how lines are printed since it breaks tests.

This should *probably* be updated for new graft path functionality, but
how that should be done is an open question.
Fix the command line description of bup index man page
Add EOPNOTSUP as an expected exception to _add_linux_attr

EOPNOTSUP is already detected by _apply_linux_attr_rec, but not by
_add_linux_attr - this breaks bup index on Linux systems which return
this flag (ZFS-on-Linux 0.6.2 has started doing this).

Signed-off-by: Will Rouesnel <w.rouesnel@gmail.com>