Explicitly close connection on ErrBadConn

This prevents panics when a connection is used after `ErrBadConn` is returned, since we can check for a closed connection.

This allows for example conveniently deferring `rows.Close()` without checking for errors.