the way I envisioned `user_agent` to work is that it would typically be set to the name/version of the client library... i.e. `go-nsq/0.3.5-alpha` 

Perhaps the end-user `UserAgent` property should be appended to the above, in parentheses, like it would in HTTP:

```go
userAgent :=  fmt.Sprintf("go-nsq/%s", VERSION)
if q.UserAgent != "" {
   userAgent = fmt.Sprintf("%s (%s)", userAgent, q.UserAgent)
}
ci["user_agent"] = userAgent
```