Decorate push_branch with a retry_on_errors and handle 128 return code

Recently GitRepository.push_branch() has been failing intermittently with
return code 128 although permissions are correct. Similar to the SSL errors,
it makes sense for this method to retry at most 3 times to push to the remote
before failing the command.
Refactor retry_on_error to reduce complexity
Merge pull request #180 from sbesson/rc128_retry

Decorate push_branch with a retry_on_errors and handle 128 return code