journal: removed superfluous qhead recovery
journal: removed fsize shrinking, unused 'next' pointer
journal: skip invalid nodes on fetch
journal: disallow duplicates (invalidates old duplicate entries)
tests: journal test rewrites same keys, value-size stepping
journal: file end condition updated

the free space is at the end of file if:
- the file is empty OR
  - qhead.pos <= qtail.pos
  - free.pos > qtail.pos

tests: added randomized values per each read/write
journal: rewind to datablock start, as qhead may be elsewhere

this reuses maximum amount of space after flush
journal: moved file-end detection inside the eviction loop

this fixes an issue when the end-of-file was encountered not before, but
during node eviction
journal: moved node descriptor wraparound from write_out to write_in

this is to guarantee that there is at least one vacant entry between the
qtail and the qhead
tests: iterate the ascending entry size twice
journal: fixed missing node wraparound in journal walk
journal: check minimum fsize limit and log error
journal: fixed free.len calculation if the journal is empty
journal: count rewinds, second rewind means not enough space to store given item
unittests: extended journal tests with changeset store/load.
journal: added a per-zone lock for journal access.

 - When reloading a server, there's a possibility of two readers reading
   the journal, but that should be fine. This is because the zone
structure is recreated during reloads, and so is the lock. Only events
can write to journal though, so there's no possibility of concurrent
read and write.
journal: added lock for journal flush
tests-extra: IXFR stress test
journal: remove unused
unittest: test journal is not created when file size is too low