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
jeweler is awful. I just stuck it in here coz the Rakefile refused to run without it. I guess we can drop it completely and just use the checked in Gemfile.