Added type property to GTTreeEntry

This is very similar to GTObject's implementation, but because GTTreeEntry is not a subclass of GTObject, it must be redefined here, using the underlying git_tree_entry functions instead.

The type was also added to the description.
Moved to using +[GTObject objectWithTreeEntry:error:]

`+[GTObject objectWithObj:inRepository:]` has a nice check for what type the underlying object is, and returns an ObjC object that matches it's class to the type. This check is not present in `-[GTObject initWithObj:inRepository:]` however. So in `GTTreeEntry`, we should use the higher method.

This causes a slight issue with using `-[GTObject initWithTreeEntry:error:]`, so it has been deprecated. It still works by calling `+[GTObject objectWithTreeEntry:error:]`, but causes an unnecessary call to `alloc`.