apply goimports
use a more granular lock on q.maxInFlight to avoid recursion
use a more granular lock around connections
get rid of unnecessary indentation
refactor random 'test water' connection block to avoid holding RLock over q.updateRDY
don't hold RLock over q.ConnectionMaxInFlight
conn: make public
reader/writer: consolidate into conn
reader: add heartbeat_interval to Configure()
reader/writer: add output buffering options
reader/writer/conn: move timeout and connect responsibility
reader/writer: move read loop into Conn
reader: separate configure
reader/writer: use callbacks rather than channels