Add a database health monitor.

Here we introduce an asynchronous health monitor. It is used in a circuit-
breaker in sketchy database's failover logic. This way, when a read query is
issued and a slave is down, no exception will be issued unless the database
has gone down since the monitor last checked it, or both databases are down.