GitLink support in TreeDefinition

Following on from [this discussion](https://github.com/libgit2/libgit2sharp/pull/312#discussion-diff-3758509):

- [x] Bit of somewhat-related cleanup
- [x] `Add(string targetTreeEntryPath, GitLink gitLink)`
- [x] Test `TreeDefinition` behavior with `GitLink`s
- [ ] `Add(string targetTreeEntryPath, ObjectId objectId)` so that `ObjectDatabaseFixture.CanCreateATreeContainingAGitLinkFromAnObjectId` (seems equivalent to creating `Blob` from relative path)

Thoughts?