Rework VSL_Dispatch

Highlights:

* Improved buffer handling. A vtx can now have a mix of buffered and
  shm chunks. And as shm refs are used and later buffered, they can be
  reused on the same vtx. This benefits long running transactions.

* Synth records are now returned by the cursor at the position the
  cursor was at when it was created. This solves a problem when
  writing to a file and a vtx times out, the reading of that file
  would also cause a time out delay.

* Begin records are now strictly honored, and any records before a
  Begin record are now ignored.

* More asserts on the structures

* More comments, should be easier to understand now

* Various other changes
Tune error messages given by varnishlog when loosing the log
connection.
VSLQ_Dispatch now returns sooner.

Change VSLQ_Dispatch to always return after processing one record or
one batch of records. It will return 1 if it should be called again
without sleeping.

This fixes the situation where a calling program is lagging behind,
and VSLQ_Dispatch never returns because there is a constant stream of
new log records.
Add an option argument to the cursors
Add batch records as a cursor option to the VSM cursor

If the option isn't set, batch records are never returned from the cursor.

If the option is set, batch records are reported, and the next call to
the cursor will return the first record after the batch. Calling
application will then need to know how to use VSL_NEXT pointer macros
to extract the records in the batch.
Use VSL_COPT_BATCH in VSL_Dispatch
Remove badly defined, hidden and now unused cursor skip functionality
Also flush stdout before waiting for more data
Add a SIGUSR1 handler to flush outstanding transactions

Also don't flush on SIGINT exit
Document the signals varnishlog supports