WIP/HACKS - FIXME

Changes the structure of HTTP requests so that we create an HTTP client
object and then ask it to make requests. This enables us to use
persistent connections in the future just by customizing a small part of
the HTTP client's behavior (so we could use persistent connections
_just_ for cookbook upload/download, but not for other requests).
HOWEVER:

* The old Chef::REST allows you to make a request to an arbitrary server
  by passing a full URL to get/put/post/delete/etc. Trying to do this
  will probably behave weirdly (wrong) in the current state. I'm pretty
  sure this behavior is relied on _somewhere_ so it needs to be fixed,
  at least for code that uses Chef::REST.