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

Turns out this method is a bit of a hot spot (see 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