Add push methods to GTRepository+RemoteOperations

This is a rework of @johnbeatty's efforts in #329
Remove unused completion member
Revise push doc comments (fetch->push)
Inline block definitions in headers, move typedef to .m
Remove OP_ prefix from doc comments
Have some style
Use initializers for git_remote_callbacks and git_push_options
Add GTRemotePushSpec.m
Add test for pushing single new commit to remote
Add transfer progress blocks to push tests

Local transport doesn't currently call the progress callbacks
Add commit count expectations
Merge branch 'master' into ben/pr/push
Clean up push tests
Further test revisions

Created convenience localBranchWithName block. Make branch references local to examples.

Also fixed case where afterEach wasn't deleting localRepo, which allowed removal of redundant removeItemAtURL call.

Added pending dual branch example.
Add example of pushing two branches
Fix up push test failures
Check branch, branches and remote with NSParameterAssert()
Remove assumption that local and remote branches have same shortName
Merge pull request #419 from phatblat/ben/pr/push

Add Push