Using `__del__` often closes the database on a different thread, which
is not supported by the sqlite module and produces a different warning.
Explicitly close the status database everywhere it is used.
otherwise, when trying to run `pytest` in a `python3.13` environment
results in a bunch of
```
tests/unit/sync/test_sync.py::test_partial_sync_ignore
/home/user/.asdf/installs/python/3.13.1/lib/python3.13/asyncio/base_events.py:650: ResourceWarning: unclosed database in <sqlite3.Connection object at 0x7fda8f6b6c50>
sys.set_asyncgen_hooks(
Enable tracemalloc to get traceback where the object was allocated.
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
```
Installing on Python 3.7 no longer works due to lack of support in the
minimal version of setuptools_scm. This commit makes the change
official, but it happened a while ago.
Hypothesis found the following example:
```
tests/unit/utils/test_vobject.py:335: in add_prop
assert c[key] == value
E AssertionError: assert '0' == '1'
E
E - 1
E + 0
E Falsifying example:
E state = VobjectMachine()
E unparsed_0 = state.get_unparsed_lines(encoded=False, joined=False)
E parsed_0 = state.parse(unparsed=unparsed_0)
E state.add_prop_raw(c=parsed_0, key='0', params=[], value='0')
E state.add_prop_raw(c=parsed_0, key='0', params=[], value='0')
E state.add_prop(c=parsed_0, key='0', value='1')
E state.teardown()
```
After the two `add_prop_raw` calls, `c.props` is `["0;:0", "0;:0",
"FOO:YES"]`. `_Component.__delitem__` then fails to effectively delete
the previous key: it deletes the first `"0;:0"` item, but then checks
for continuation lines following it and incorrectly keeps the second
`"0;:0"` item even though it begins with one of the prefixes it's trying
to delete. Checking for the prefix in the check for continuation lines
fixes this.
Fixes: #1149