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.