Silence more uninit warnings
Simplify MDB_cursor: Drop flags C_ALLOCD,C_SHADOW.
ITS#7515 Fix tracking of parent txn's cursors.

Restore mc_flags and xcursors, they were tracked but not merged.
Simplify: Track parent txn's original cursors after backing them
up, instead of tracking copies and merging them back at commit.
ITS#7515 Reject conflicting page versions.

If mdb_page_touch() sees a page in txn's dirty_list, that
is the page version txn's cursors should have.  Fail if
the user may be seeing and depending on another version.
Fixup other cursors after delete op
Cursors: Clear C_EOF when clearing C_INITIALIZED
Fix rebalance/cursor adjust

When collapsing root, must also move cursor index down,
not just the page pointer.

Also in mtest, break from NEXT loops on error, otherwise it just
prints the previous key/data again, which looks confusing.
Do not follow uninited cursors' page pointers.

Nor uninited cursors' subcursors' page pointers.
Fix env_read_header() on Windows

Commit d6d2638acc245116b8f091ac425b6700d06c4713 broke read
on zero-length files.
Factor out parent
Move code out to mdb_page_dirty()
Save freelist using proper mdb_cursor_put().

(Restructuring for upcoming mdb_page_spill work.)
mdb_freelist_save() can't just Get() the destination, since
mdb_page_spill() may have put the destination in the read-only map.

TODO: Can this new put() modify the freelist, which would break it? The
final iteration's put() can shorten the node, the rest uses MDB_CURRENT.

We could set P_KEEP on dirty freeDB leaves and ovpages, since they are
all about to be modified.  But the code in this commit must stay anyway,
if mdb should support dropping a 256G DB. I.e. too big for dirty_list.
Simplify: Always set C_UNTRACK for tracked cursors.

TODO: Rename C_UNTRACK to C_TRACKED.  Omitted now for readability.
The current name is because it's lazy: not always set when tracked.
Delay touching pages until cursor is positioned.

This avoids unnecessary rewrites of pages that do not change.
(Restructuring for upcoming mdb_page_spill work.)
Spill pages, take 3
Also set/clear P_KEEP in parent txn's cursors
Bump version to 0.9.7
Tweak comments, defaults should be OK already
Fix stale sub-cursor C_INIT flag

Whenever we enter cursor_set() the sub-cursor's flag must be
cleared. If the new cursor position has valid subdata it will
be initialized again, if not then the sub-cursor has nothing
to point to.
More for stale sub-cursor flags

Same fix for cursor_first/last.