channel refactoring
channel refactoring

* move auto-requeue responsibility into Channel (from Message)
  but keep the go channel as part of the Message structure for
  simplicity... rename to UtilChan
* move the code for requeue'ing out of the in-flight functions
* add duplicate error checking to pushInFlightMessage()
* privatize some functions that did not need to be public
* fix the timing of incrementing counters
* fix a bug where the auto-requeue goroutine was started before
  a client actually received a message

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