Raise ActiveRecord::CannotConnect on adapter connection errors

It'd be nice with an adapter-agnostic exception class for connection-class errors. This is useful for falling back to e.g. another connection (readonly in my case) or a fallback value in case AR cannot connect to the database.

If there's interest in this, I can look at adding this for some of the other adapters (e.g. `sqlite3` and `postgres`) and look at more errors (e.g. inability to route, timeouts, unknown host, unknown error, etc.). 

@arthurnn @tenderlove 
Let's extract that logic to a common parent, instead. Inheriting from `StatementInvalid` for this is nonsensical, and will lead to this exception being caught in unexpected places.