Restore disconnection-handling for PostgresqlAdapter

Per #12867, #verify! is currently failing to recognise that the PostgreSQL connection has gone away.

The only way to truly confirm we can send a query is to do so, as was the case before 34c7e73.

So we need to put that behaviour back, while adding locking to protect against the reaper hitting a connection while it's in use.

Commits are currently split for easier discussion; this will obviously need to be squashed and changelogged before merge.

/cc @tenderlove