Add a Poleica::TimeoutError and improve timeout handling