reader: RDY handling updates, etc.
reader: RDY handling updates, etc.

* move ready updating onto read side so that it is independent
  of messages being finished.

  this is not a problem for sync handlers because their
  max # inflight == # handlers.

  this also simplifies async handlers (like in `nsq_to_file`) by
  allowing them to buffer in interesting ways but not starve the
  incoming stream.  however, it does mean that responsibility for
  bounding the # of messages in flight is now placed on the client.

* put stopFinishLoop onto nsqConn

* dont allow lookupdRecheckChan to block

* fix race condition between FIN of the last message and the ACK from
  nsqd for our CLS command.  by checking the *reader's* stopFlag also,
  we can guarantee that we'll close the finishLoop if we're supposed to.

* remove .75 multiple for buffer size calc (this would actually cause
  a reader, in aggregate, to have more in flight than their configured
  buffer size when conns > 1)

* client can disable MaxAttemptCount when 0

glycerine/go-nsq,DanielHeckrath/go-nsq,bitly/go-nsq,nsqio/go-nsq,mreiferson/go-nsq,server-nado/go-nsq,judwhite/go-nsq,hailocab/go-nsq,judwhite/go-nsq,nsqio/go-nsq,mreiferson/go-nsq,deepglint/go-nsq,server-nado/go-nsq,fayep/go-nsq,jmptrader/go-nsq,jmptrader/go-nsq,huangping40/go-nsq_hailocab,DanielHeckrath/go-nsq,fayep/go-nsq,yepengxj/go-nsq,huangping40/go-nsq_hailocab,grepory/go-nsq,grepory/go-nsq,absolute8511/go-nsq,bitly/go-nsq,deepglint/go-nsq,absolute8511/go-nsq,yepengxj/go-nsq,hailocab/go-nsq,glycerine/go-nsq