thread-safe Gearman client

Idea for making packet a friendlier abstraction:

```golang
type PacketCode string

const (
	Req PacketCode = "REQ"
	Res            = "RES"
)

type PacketType int

const (
	SubmitJob PacketType = 7
	JobCreated = 8
	WorkStatus = 12
	WorkComplete = 13
	WorkFail = 14
	WorkData = 28
	WorkWarning = 29
)

type Packet struct {
	code []byte
	typee int
	arguments [][]byte
}

func New(c PacketCode, t PacketType, args ...[]byte) Packet {
	return Packet{
		code:      []byte(c),
		typee:     int(t),
		arguments: args,
	}
}
```

and change the current `Encode` and `New` methods to `MarshalBinary` and `UnmarshalBinary`: http://golang.org/pkg/encoding/