Use IO#read rather than repeated calls to Socket#recvfrom

Turns out this method is a bit of a hot spot (see @vmg's excellent investigations over at https://github.com/github/github/issues/31521#issuecomment-56088039).

Using IO#read with a Ruby timeout reduces the time taken to serve a 100mb blob from 14.4 seconds to 3.5 seconds on a lab machine.

cc @github/perf @github/gitrpc
Gross. `jeweler` is a complete shitgem and this will clutter the Gemfile of the main app. Maybe this should be an `add_development_dependency` on the gemspec instead. Or maybe we shouldn't be using `jeweler` at all.