Buff up returning strings

We expose `git_buf` so let's make use of it everywhere in order to return strings to the user, instead of the ptr+len pair.

---

One namespace is still not converted, and that is `git_reference`. There we use `GIT_REFNAME_MAX` quite often to allocate the maximum space for a name, and is one of the few pieces of the library that doesn't use `git_buf` internally. Should we consider this to be legacy or do we want to keep limiting this?