Really fix the DBD::SQLite ping() issue
Apparently DBD::SQLite is notoriously bad at synchronizing its internal
transaction state with {AutoCommit}
https://metacpan.org/source/ADAMK/DBD-SQLite-1.37/lib/DBD/SQLite.pm#L921
There is a function http://www.sqlite.org/c3ref/get_autocommit.html
but DBD::SQLite does not expose it (nor does it seem to properly use it)
Furthermore the detection is rather broken as described in RT#80087.
Bend over backwards to attempt to preserve as much sanity as possible.
While at it issue a non-trappable warning so that folks fix the offending
codepath (which arguably is still broken)
It is possible to have a proper "connection", and have "ping" return
false anyway (e.g. corrupted file). In such cases DBD::SQLite still
keeps the actual file handle open. We don't really want this to happen,
so force-close the handle via DBI itself (this solves a bunch of Win32
test failures)