tdb2: remove: it's now in SAMBA where it belongs.
tdb2: make tests include a single mega-header to simplify future patches This lets us add the new files to a single place.
tdb2: move open routines into a separate file (open.c) Simply tidying up.
tdb2: transaction support This adds transactions to tdb2; the code is taken from tdb1 with minimal modifications, as are the unit
tdb2: fix remapping inside tdb_traverse_read Because we (temporarily!) marked the tdb read_only=true, any remap would mmap PROT_READ, and the next store would SEGV. Pulled in more test infrastructure from tdb.
tdb2: change to using a hash tree. As the locking issues with enlarging a hash were so nasty, we switch to a tree structure for the entries. It's a hash which expands to point to sub-hashes when it fills. This means we no longer have a 'volatile' header: the top hash cannot move. In fact, we no longer store a copy of the header in the tdb_context; we only need hash_seed. New helper functions for accessing writable areas and committing the results (if they had to be copied). New debug test to make sure we don't hold access while we're doing something which could cause us to unmap/remap. Find becomes more complicated: we need to track where we found (or didn't find) an entry so we can easily add/delete it. Traverse becomes more complicated: we need to track where we were in the hash tree.
tdb2: use immobile free buckets, rename tests to show some ordering. We put the free lists at the beginning of a zone; this means no record can be larger than a zone, but means they cannot move. Once we change hashes to be expanding, they won't move either and the result should be simpler.