api calls now get retried

I've also made api_timeout, redirect_limit, and max_retries Fetcher class instance variables.
This is so we can set them with out warning (prior they were constants) at the class level, and all future instances of a Fetcher get the set variables, but can be individually changed as well.
 
This is in response to this issue:
https://github.com/bundler/bundler/issues/2421

As well as a personal need for the api call to be retried.

If there's anything I can do to improve the quality of this request, or anything, please don't hesitate to teach me something!