Close database connections that fail the verify! check. More...

Hello all, looking for some feedback on this change. Thank you for reviewing!

Normally, a database connection is leased, verified, reserved, and then
returned to the pool from the list of reserved connections
(on success or failure). If an exception is thrown in the verification
step, the connection is never reserved and therefore can not be found in
the reserved list to be returned to the pool.

The verification step will fail if there are database connectivity issues
(db restart, etc.) and will not return connections. Once all the
connections are used the server will no longer accept new connections
until it is restarted.

This change ensures that the connection is checked back into the pool if a
driver exception occurs during connection.verify!. This prevents the
connection being stuck in an 'in use' state.
We should always have `c` here.  We already make that assumption by calling `c._run_checkout_callback` at the start of the method, and the only call-site for this method is the checkout method which calls `conn.lease` before calling this method.  Remove the `if c`

Also, I find `c.close` confusing in this context.  All it is doing is `pool.checkin self`, so just call `checkin(c)` here to make it clearer.