client Write() improvements

- use `select` to poll for client write events
- removes the need for WriteError(), `select{}` takes care of both
  channels

This is unbenchmarked, but should provice some significant performance
improvements.