Add Push

> Since #329 has been stalled, I thought I'd take a stab at finishing this up. Pull needs to be reworked to take advantage of fetch now that #224 is in master. I'll submit that as a separate PR once I've got it working.

There are two new public methods:
* -pushBranch:toRemote:withOptions:error:progress:
* -pushBranches:toRemote:withOptions:error:progress:

Since libgit2 provides for pushing any number of branches I figured it would be convenient to expose that. However, the refspecs that this implementation builds assumes the remote branch has the same name as the local tracking branch.

I've tested these changes from a consuming application, but didn't add/update tests in the project because I haven't been able to get the ObjectiveGit-MacTests target to build yet.

In general, we prefer to use inline block definitions in headers, because it makes things easier on consumers. Can you please move this back to the implementation file?