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>