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).