reader: improve RDY handling

* consolidate RDY handling to a single goroutine per Reader
  instead of per connection.  this simplifies the code paths
  and eliminates the need to synchronize across connections.
  (ie. when you encounter backoff you want all of the connections
  for that Reader to backoff).

* when exiting backoff send RDY 1 to single, random, connection.

* improve redistribution to better detect and handle cases
  where disconnections need their orphaned RDY count
  transferred to existing connections, such as when in backoff.
reader: add mock tests for RDY handling
reader: simplify exit timer code
reader: cleanup handler code
reader: trim long lines
reader: separate files for nsqConn and Reader
reader: comment cleanup
reader: synchronize cleanup of connection
reader: guarantee cleanup of in flight messages
reader: cleanup lookupd query index code
reader: synchronize access to shared lookupd slice