Enrich git data model

- Implement str, eq, ne, and hash in all git data model classes.
- Add rich comparisons to Commit (lt, gt, le, etc.)
- Add slicing to Sha1 for getting "snippets" of the SHA-1 hash string
- Make Minor cosmetic updates to model docstrings to comply with
  latest spec
Add HEAD pointer to git data model

- Include equality comparisons against Branches and GitObjects in
  addition to other HeadPointers
Add equality comparisons for Commits in Branch