Refactor and test connection handling and lookupd response handling.

- Only reconnect to new nsqd instances in lookupd response, not all of them
- Disconnect from removed nsqd instances in lookupd response.
- Connections with errors call back to NSQReader.remove()
  (Connection.close() does not do this implicitly).
- Add a unit test for NSQReader (and MockConnection class)
- Add a unit test for SyncResponseReader (and MockHandler class)
- Add some class and method comments
- Fix typo in public method 'Connection.decodeMesage()'

Refs Issue #3