Use a single transaction for DB state write-back at termination.
Make observer_ptr constructable from unique/shared ptr.
Add make_observer.
Add an optional_observer_ptr for documentation purposes.
Fix ThreadPool::Pool enqueue wrapper not forwarding queue_jump parameter.
Use unique/observer ptrs or references instead of raw ptrs for DB msgs.
This is to make lifetime/deletion management less unclear.
Change dbsendmsg_list to a vector instead of a queue.
DB message lifetimes now extend beyond the end of the transaction.