Teach repository to use relative paths for git symbolic links

When cloning submodules, git can place the sub repository inside the parent repository's .git folder, instead of with sub repository's working directory. It links these two through a "git symbolic link". libgit2 already had support for most of this, but it always created the links using absolute paths, where as git creates relative paths.

This change is to allow the creation of repositories with separate the repository and working directories and calculates a the relative path between them.

TODO:
- [ ] Better names for functions?
- [ ] Detect cases when relative paths would not work, and fallback to using absolute paths? (e.g. initializing a repository where the repository and the work dir are on separate drives?)
- [ ] Update Changelog.md
Are these extra braces necessary? Actually, given some of the new config helper functions we now have, this can probably be simplified to:

```c
error = repo_write_gitlink(path.ptr, git_repository_path(repo), false);

if (!error || error == GIT_PASSTHROUGH)
    error = git_config__update_entry(
        config, "core.worktree", error ? NULL : path.ptr, true, false);

if (!error)
    error = git_config_set_bool(config, "core.bare", false);
```

Hmm, you can be the judge of whether that actually simplifies anything. Now that I read it, I'm not so sure.