Obsolete GitObjectType

`GitObjectType` enumeration exposes many low level internal entries.

This PR is an attempt at taming this hairy beast.

 - [x] Introduce `TreeEntryTargetType`
 - [x] Obsolete `GitObjectType` in favor of `TreeEntryTargetType`
 - [x] Introduce `ObjectType`
 - [x] Obsolete `GitObjectType` in favor of `ObjectType`