Better design for bogus servers. Both urllib and pycurl pass tests.
* bzrlib/transport/http/_urllib2_wrappers.py: (ConnectionHandler.create_connection): Raise InvalidURL instead of urllib2.URLError. (AbstractHTTPHandler.http_request): New method to override default urllib2 headers.
* bzrlib/tests/test_http.py: (TestHttpConnections): Renamed from HttpMixins. Note that this class should be inherited by a class that also inherit from TestCaseWithWebserver, this was already the case, but that's now mentioned in the doc string. (TestHttpConnections.test_has_on_bogus_host): Moved from TestHttpConnections_urllib to TestHttpConnections so that pycurl get tested too. (TestWithTransport_pycurl): New class to share the pycurl dependency testing when creating test cases for pycurl. (TestHttpConnections_urllib, TestHttpConnections_pycurl): Simplified accordingly. (TestWallServer, TestWallServer_urllib, TestWallServer_pycurl): Use the same pattern as TestHttpConnections to share tests between urllib and pycurl.
* bzrlib/errors.py: (ConnectionError): Yes, the 'Connection error' part seems redundant with the leading ConnectionError in the message, but so far, at least one test (SSHVendorBadConnection.test_bad_connection_ssh) relies on it and I don't know if suppressing this redundancy is the best way to solve the problem.