reader/writer: evented refactoring

* proper separation of responsibility, introduce Client
  superclass, move work into AsyncConn, etc.
* add EventedMixin to provide on(), off(), trigger()
* switch Reader/Writer
travis no longer supports python2.5