Implemented repo downloads using streams

This implements feature request #93 using the requirements stated in #94

Mode information is available at the `TreeEntry` level from dulwich:

```
for entry in tree.iteritems():
    ...
    tarinfo.mode = entry.mode
    ...
```

Also, please set `tarinfo.mtime` to the time of the commit we're downloading (which is also what `git-archive` does).