http/1.1 keepalives

To get Net::HTTP to give you keepalives with #new you actually need to:

*  Call http = Net::HTTP.new
*  Call http.start (important because #request will fuck you if you
   haven't started the connection, because...  #FML)
*  Cache the Net::HTTP objects by host and port number because if
   you point at a different url on a redirection (like we use for
   cookbook downloads, you'll lose your keepalive)
*  Reuse the objects correctly and keep state
*  But use a single object per thread

This works but we probably need a more formal persistent cache of
BasicRequest objects and need to be a little more careful about
thread safety (each thread needs its own persistent connection cache).