Use twisted.web.client.Agent for download requests (use of HTTP/1.1)

Adds http11.HttpDownloadHandler in scrapy.core.downloader.handlers
Renamed downloader to Http11DownloadHandler and some refactoring

Only for HTTP, not HTTPS
Test on expected body length instead of request method (HEAD case)
Restore handling of HTTPS
http11 cleanup
add http connection pool and custom ssl context factory
enable persistent connections
move ssl context factory to its own module and implement a non-ssl version that warns about pyopenssl support
remove duplicate context factory handling for non-ssl support in http1.0
close pool connections before finishing tests
empty bodies does not require a body producer
adapt for singletons removals
cleanup http connection pool on engine stop
agents requires an instance of contextFactory
implement download timeouts based on deferred cancellation
add required files to support twisted 11.1 (precise)
restore http10 as default handler and skip tests if http1.1 is not supported
improve twisted version tests and enable HTTP11 handler by default if supported
show deprecation warning for HttpDownloadHandler
Merge pull request #318 from scrapy/http11

Add HTTP 1.1 download handler