Introduce new RqlConnectionError

RqlRuntimeError has too large of a scope and it
is not possible to easily determine which of these
instances are retry-able errors.

RqlConnectionError is to be used for retry-able connection
and server errors.

A separate exception should be introduced for cases where
the cluster is unwritable due to loss of the primary shard.