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.
Is `refspecs` optional here? Because I'd expect to be able to pass no refspecs here and use the default `push` specs as set in the config for a remote. That's how it works in the current `Remote#push` implementation. I know that by default, no push spec is set up, but I'd still like this to mirror the behavior of `git_remote_fetch`.