Fix a regression introduced by cba36ce6

Request.prototype.init() should not clear self.method if it is already
set.  This is relevant when retrying requests with proper authentication
(the retries are handled similarly to redirects, but should keep the
same request method).
Don't delete headers when retrying a request with proper authentication
Refactor and expand basic auth tests

The new tests catch the regression corrected by c40993fc and the bug
corrected by edc2e17e.