ObjectType in TreeEntry

You can now ask what kind of object a TreeEntry points to
Implement callback based tree walker Walk()
Implement commits from separate file

The object files live in the directory objects/
with <= 256 subdirectories where the first two
hex digits are from the SHA1 object and the filename
has the rest digits.

Example: 
commit object 29ad9d799ae51db518d09d307125bcc212688eb4
lives in
testrepo.git/objects/29/ad9d799ae51db518d09d307125bcc212688eb4