[Fix #65] Handle irregular polling events properly

Add a convenience wrapper around `select.poll()` to handle error
conditions and hangups properly