add optional "timeout" parameter to pubsub.can_read

The UNIX anti-pattern of
```
     ret = select([fd], [], [], 0)
     if not ret: sleep(timeout)
```
should instead pass the timeout to select, for one fewer syscall.

I'm unclear if the ordering in connection.can_read() is correct -- it seems to me the short-circuit-or should check the parser before doing the select(). But I don't know how to trigger the appropriate condition to test the logic, so I'm leaving it alone for now.