consumer: ConnectToNSQLookupd does not propagate errors


Currently, the ConnectToNSQLookupd method on Consumer fails to return any error when invoked with an invalid nsqlookupd address.  Instead the error is logged (and swallowed) in the queryLookupd func, right after the call to apiRequestNegotiateV1, since queryLookupd doesn't return anything.  This leaves a consumer with no reliable way to tell that the lookupd address provided was invalid. 

To repro:

```go
func foo() {
	q, _ := nsq.NewConsumer("the-topic", "the-channel", nsq.NewConfig())
	handler := &SomeHandler{}
	q.AddHandler(handler)
	err := q.ConnectToNSQLookupd("1.2.3.4:9999")
	// err is nil!
}
```
I don't think this lock is going to be sufficient...

The 3 counters need to use `atomic.LoadInt64` and, for consistency, the num. of connections should just be `len(r.conns())`.

This read lock can just be dropped after that.