Process multiple packets per tick

Before this change we would process at most one gearman packet per tick.
This meant that if we got more than one packet in a single socket read
per tick we would slowly build up a large buffer of un-read packets
(@remainder in the code). This caused problems as we started to run out
of memory and get buffer too large errors.

To solve this problem we loop and process all the packets we can in one
go.
I definitely like just having the @remainder variable and getting rid of data completely. I don't generally have a big problem with while true loops especially if there are multiple break cases and they happen right at the top of the loop. In this case I think I would favor the middle ground, in particular because I like the idea of having the line `bodyLength = @remainder.readUInt32BE 8` separated out to make it more clear that the field represents the body length.