thread-safe Gearman client

Also, I'm not buying the "submodules are an antipattern" argument... IMO if we're moving types into a single module in order to conveniently access and modify their private data, then we're creating a world where types have a large surface area for mutation and are incredibly stateful/hard to work with.