Create a new object id reference, overwriting an existing one with the same name, if it exists.
If the new reference isn't an object id one, any pointers to the old reference become invalid.
The reference will be created in the repository and written to the disk.
This reference is owned by the repository and shall not be free'd by the user.
The name of the reference
0 on success; error code otherwise