Pass down txn manager state to message application, which it can use to
run full garbage collection when a leafentry has > 1 committed entry.
Consolidate garbage collection information into txn_gc_info. Explicitly
separate the difference between the oldest referenced xid we can use for
implicit promotion vs simple garbage collection.
Fix up a race where two threads could update the oldest referenced xid
in a different order than they began, and blow up a bad assert.
Add test to detect a case of bad implicition promotion
Fix test
Do not use the newest of our ancestor's oldest_referenced_xid values -
there may be an abort message waiting to be applied.
Allow txn manager state to be created cheaply, with the option to later
initialize it for full gc if we think it is worth it. This allows for
full gc to run when bringing a basement node up to date.