Implemented repo downloads using streams

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

Instead of walking the filesystem structure itself, we should use the repository abstraction given by dulwich's `Commit`, `Tree`, `Repo`, ... objects here.