Create is not really a good name. This function is more like `git_repository_set_reference()` as it's the most generic way of setting a reference. If you have the old expected value, but don't have a `git_reference` with it, this is the only way of making sure the value hasn't moved.

(ignore for a minute that you can do this with `git_reference_set_target()` right now, because that's going to go away)