thread-safe Gearman client

I read an article recently in Golang Weekly that called lots of sub-packages like we've been doing an anti-pattern. This might be a good argument for that: if the client had access to the internal state of the `Job`, `Status` wouldn't need to be a pointer and there wouldn't need to be any `SetState` method - I think it would clean up the interface a lot more.

re: `io.Reader`, I like that a lot. I was trying to think of a cleaner way to do this, and that sounds really good.