Assign minimal metadata to metadata objects in protocol.py

Some nodes will never have metadata, particularly in the case of grafted
paths. So a default blank metadata needs to be sent to keep the protocol
synchronized.
Send blank metadata, but do not set git mode in protocol.py

This will need further improvement I suspect - either a separate gitmode
tag, all improved common_rec knowledge since we do need to determine
directory and/or file status.
Add tprotocol.py for protocol specific tests.
Modify metadata to support storing the git file mode.

In the advent that a VFS node has no metadata, it would be nice not to
break the normal metadata features. This patch adds a new tag _rec_vfs
which stores the git file mode which the VFS falls back on.

This tag will normally never be used unless explicitely enabled, so
there is no overhead.
Fix from_vfs did not return a value.
Missed a list dereference in the unpack code in metadata.py
Remove left over call to ungrafted rig.iter in index-cmd.py

This line was left over from merging and is unnecessary. It may have
been affecting indexing behavior.
Fix a bug with initializing offset positions in GraftWriter

GraftWriter did not track offset positions properly in the deduplication
dictionary, which resulted in subsequent executions corrupting the index
graft_point data and setting it all to 0s.