Introduce RemoteCollection.Rename.

Ready to merge on sight!
Actually, from an API perspective, I think this method should rather return a `Remote`. This would mimic what other collections do.

So the list of failed refspecs may rather end up being returned in a call back (maybe bearing a similar signature than **[UnmatchedPathHandler](https://github.com/libgit2/libgit2sharp/blob/d9ecbaed778a2b7450e7c0bf4305179957bb97ad/LibGit2Sharp/Handlers.cs#L79)**)