Generate message for all possible ConnectionError

Unrecoverable exceptions generate an `ActiveMerchant::ConnectionError`
along with a helpful error message, as defined by the
`DEFAULT_CONNECTION_ERRORS` constant.

However, there are a few exceptions that would be rescued by the code
but would not generate an exception message, because these exceptions are
_subclasses_ of those defined in the constant:

```
require 'active_utils'
require 'net/http'
require 'net/https'

class Class
  def descendants
    ObjectSpace.each_object(::Class).select {|klass| klass < self }
  end
end

Timeout::Error.descendants # => [Net::ReadTimeout, Net::OpenTimeout]

OpenSSL::SSL::SSLError.descendants # => [OpenSSL::SSL::SSLErrorWaitWritable, OpenSSL::SSL::SSLErrorWaitReadable]
```

This adds the ability to look for the appropriate error message in the
`DEFAULT_CONNECTION_ERRORS` constant via the exception that occurred or
its ancestors.  This way, a message should always be returned, and we
will be able to disambiguate a `Net::ReadTimeout` from a
`OpenSSL::SSL::SSLErrorWaitReadable` from outside ActiveMerchant by
observing the ConnectionError message.