Removing all the popsicle sticks from sending requests with curl_multi

Resolves issues introduced in PR #290. Removes a ton of the cruft in the current CurlMulti implementation that relies too much on recursion and black magic. This change introduces a proxy object that sits in front of a collection of CurlMulti objects. It fixes weird issues where errors occur while sending requests that were triggered from other requests and properly aggregates failed requests and responses. I think this also allows us to fix #295.