Initialize and Shutdown sqlite3 globals
Summary:
sqlite3 recommends that sqlite3_initialize be called when the
application starts, and sqlite3_shutdown when it stops. Since we don't
always use sqlite3, we initialize it when a SQLiteDatabse is constructed
(calling sqlite3_initialize after initialized is a no-op). We call
sqlite3_shutdown when we see that there are no databases opened. The
number of open databases is tracked by an atomic g_dbs_open.
This is a backport of core#19077 [6/26]
https://github.com/bitcoin/bitcoin/pull/19077/commits/3bfa0fe1259280f8c32b41a798c9453b73f89b02
Depends on D10545
Test Plan:
With clang-tidy:
ninja
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D10546