bkacontent-do{,-files}: place in main(), print top-level exceptions
bakcontent: run 'git gc' on every snapshot

Really makes the .git smaller.
bakcontent: ensure bakdir's basename is '.bakcontent'

This is actually used in bakcontent-do os.walk() to avoid entering
.bakcontent.
bakcontent: store: local: use 3 hexdigit prefix for store directories

All file systems have no trouble with 4096 subdirectory entries. We
might as well push it as far as it will go.
common: args_parse_dirs(): ensure absolute path is used for bakdir

This help guarantee bakcontent works with a .bakcontent and root in
arbitrary places with respect to each others.
bakcontent: store: local: copy over (git) history in the store

This is done to make it easy to share a single store with several
.bakcontent sources. The histories are stored independently, but the
file storage will benefit from the deduplication.
TODO: some ideas
bakcontent: store: local: store under "real", computed-during-copy SHA-512 name

(Optimistically) Check for existence with SHA-512 in the snapshot (if
in there), but always store under real, computed-during-copy SHA-512 to
work in the presence of races with concurrent writers to 'fn'.
bakcontent: archive: combine snapshot and 'store sync'
bakcontent-do: set Popen bufsize to 8192

Add first benchmark file t/b0007.sh.

Benchmarks are not run by default, as they generate a lot of bogus
storage data, can take a while, and their results are hard to evaluate
on arbitrary hardware.