Add Peer#closed?
Check if we should reconnect in #handle_disconnected

Instead of blindly connecting again and checking whether to reconnect when that connection fails.
Add API docs for Client#reconnect?
Pass the connection and timeout parameters to request retries
Avoid raising when returning a failed future works
Fail requests that are sent after the connection has closed
Make sure queued messages are failed when the connection closes
Fail in-flight and queued requests with different errors

In-flight errors are failed with ConnectionClosedError, and queued (and request sent after the connection has closed) are failed with RequestNotSentError, which is a subclass of ConnectionClosedError.

The point is to make it possible to differentiate between requests that have been sent and not received a response, and requests that were never sent. The latter are always safe to retry, the former depends on the request.
Include the cause message in the connection close error
Create a local alias for ConnectionClosedError

So that clients can use Ione::Rpc-scoped errors, which makes more sense.