Cleaning up WebRequest::GetResponse - doesn't peg CPU

Refactored this a bit, now that I understand it better. It uses
`curl_multi_select` to block on pending requests rather than spinning a loop
(which should prevent 100% CPU usage). It also returns the response early when
it's retrieved (which it did before but I'm not sure that it did in my patch).