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 
No need: we get `cause` for free.

I suggest `ConnectionFailed` as a name: "cannot" seems a bit too vague about the nature of the problem, given we have an existing `ConnectionNotEstablished` we need to distinguish ourselves from. Perhaps we should rename the latter to `ConnectionNotConfigured` or something?