thread-safe Gearman client

One thing that may make `io.Reader` a bit weird: the `io.Reader` interface assumes you can read any number of bytes, but Gearman messages operate in discrete chunks - we don't want people to be able to read, for instance, half of a data or warning packet.