Make jids return NotImplemented when compared with something else
Give JIDs a nicer repr output
Introduce presence module: a named tuple for presence state
Some logging for tests
Start shuffling the Client class around

This is the beginning of a refactor splitting Client into three classes:

* AbstractClient: the base class for the other two, implementing the
  common client features.
* UnmanagedClient: a client whose connection is controlled using
  connect() and disconnect()
* PresenceManagedClient: a client whose connection is controlled by
  setting the desired presence, which automatically reconnects if
  possible (like stay_connected did)
Simplify Node state management by using a DataEvent
Fix str() operator on domain-only jids
Fix _disconnect_and_wait on PresenceManagedClient
Make services one-node-only again
Fix and write tests
Add preliminary roster support module