I agree that returning a `Commit` that's not actually a `Commit` feels a bit strange. We could certainly handle `GitObjectType.Commit` as a special case here to return a `GitLink`, but I wonder if it would make more sense to return a new type from libgit2 (e.g. add `GIT_OBJ_LINK` to `git_otype`)?