Import foreign commit prefixed instead of transplanting the tree
verbatim

This will help avoid problems with rebase.

NOTE: the '.gitrepo' file is still added at the merge stage, and _that_
file will be lost in subsequent rebases/merges.

Also, the equivalent code for 'pull' is not in place yet.

It relies on knowledge of the internal format specification for the raw
tree blob object ( what you get if you do `git cat-file tree <TREESHA>` )
and writes one by hand with a bit of ninja tricks from `perl`'s `pack`
function.

This is because silly git, unlike everywhere else in git, stores SHA1s
in TREE blobs in *binary encoding* instead of in Hex. :(

Tree Blob format is

  TYPE SPACE FILENAME NULL BINARYSHA1

Where `TYPE` is 040000 for directories/trees.

Signed-off-by: Kent Fredric <kentfredric@gmail.com>