Kill req.grace (grace is now a VCL decision, so it's unneeded).
Kill req.keep (it never made any sense in the first place).
Eliminate req->exp, there's just req.d_ttl left now.
Revamp descriptions of $default_(ttl,grace,keep)
Assign obj.keep and obj.grace from defaults on obj creation.

Losse EXP_Grace() and EXP_Keep() functions
Go over the entire struct exp-thing and simplify it a lot.

We now kill objects when t_origin + ttl + grace + keep has elapsed.
This AZ introduced the opposite race of the one it was supposed
to check:  The req might get rescheduled before we get there.
Polish, yet again, specific sizes to make this pass on both
32 and 64 bit architectures.

The good news is that this is necessary because our obj overhead
decreases.
Don't return OIS_STREAM as long as we know more data is forthcoming
Remove the diagnostic macro, we don't use it.
Pack the binheap into a structure which will allow us to have
multiple instances at a later date.

Put the "LRU_DONTMOVE" flag on the lru, rather than the objcore.
Move inserts into the binheap into the expiry-thread.

This should make object creation faster.

As a sideeffect, we loose the $expiry_sleep parameter:  Now we always
sleep optimally.
Totally overhaul the EXP code.

In general new/changed/killed objects are posted in the exp_thread
mailbox, and suitably handled by the exp_thread at its convenience.

The binheap is only manipulated by exp_thread, and it doesn't
need to hold any locks to do so.

The exp_mtx only protects the inbox to the exp_thread.

oc->flags and the lru-list are protected by the lru->mtx.

EXP_NukeLRU() is temporarily disabled.

When LRU-Nuking to make space, we mark the object as dying, so HSH
will ignore it and steal the storage from it right away.  We post the
rest of the object to exp_thread to clean up later.

The LRU change makes the 3-4 LRU test-cases unstable, (c00044, c00045,
r01140...) because they were used to the full object being reaped,
rather than only the storage segments.  I'm to tired to fix/tune those
cases tonight.

But apart from that, it seems to run the test-cases.
Cleanup & Polishing
More polishing
Don't tell EXP about failed fetches
Fix these two test-cases to work with the new LRU strategy.

Log a little bit more debugging information for now.
We don't have BUSY objects in EXP any more
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.