Provide a convenience function `git_remote_push()`

This function takes all the steps necessary to perform a push and does them for you. This is also an opportunity to provide a single callback structure instead of them being spread out between the structure and two different functions on the push object.

AFAICT basically all the bindings already provide this function themselves, so let's have an implementation in libgit2 directly.