Automatic rety, empty repo handling and updated arguments for get_commits

This PR adds:
1. Automatic retrying on failure of an idempotent request, up to a default of 5 times.
2. Handling and raising of EmptyRepositoryException which can be emitted by a call to get_commits
3. Updated arguments for Repository.get_commits, reflecting the url_params for Github API V3

Please let me know if you have any feedback on style, etc. I will happily address.