Remove caught exceptions in test/__init__.py; they were too broad
Don't reuse connections in tests

This test was failing because I was reusing a connection to test retries and
httplib was barfing with CannotSendRequest. Initially I blamed my network but
it turns out I was just bad at the code.

Stop catching CannotSendRequest or ECONNREFUSED in the requires_network
decorator.
Make Retry class immutable

Previously, passing a Retry object to multiple requests would carry along the
previous Retry state with the new request. Fixes this problem by never altering
the state of a Retry object; instead, create new Retry objects and return them
each time the counter should be incremented. In some ways this simplifies
the design; the Retry object doesn't need to store _total_error_count,
_read_error_count and other counts. Further, Retry objects are never modified
once they are created, which makes them easier to read about in some respects.

In some ways however it makes it more verbose; certainly more memory is
required to return a Retry object every time we increment it.

On balance I think this is worth it; it would be pretty tricky to implement it
other ways, due to the recursion in urlopen().
revert some sleep values in tests
wrong order
revert some more test values
Move is_fp_closed back into the util package.
validate retries
reset connection values to their originals.
don't sleep before retrying a Redirect request.