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.

That's a good question :) We probably need at least one refspec in order to push. So, perhaps `branches` can't be nil.