After trying several different ways, rename vcl_hit{} to vcl_lookup{},
that seems to be the shortest path from A to B.

(Please don't update docs yet, this is just a transition state)
Fold cnt_hit() into cnt_lookup()
Flush the req->vsl on a panic.
Actually do the VSL_flush on panics
Add beresp.uncacheable (will replace beresp.do_pass) and obj.uncacheable
variables.
Move the check for cached uncacheable objs (= "hit-for-pass") into
default VCL.

Add a back-stop, so that a return(deliver) gets turned into return(pass)
with a VCL_Error logged.
Use the new-ish enum type for req-fsm returns
Move esi-policy from hash-lookup to req-fsm
Prefer exact matches

If there are multiple matches for a given VSL tag (such as "Hit"
matching both Hit and HitPass), prefer the one that is an exact match.

Fixes #1288
Move always_miss check up front to get it over with.
Revert "Fix a bug discovered by inspection:"

13:19 < phk> you're right, that's bass ackwards

This reverts commit 4c47a36e9f8b7b2dfe7eff60c3fda418dc6effca.
Pick the youngest grace/IMS candidate object.

Save a couple of needless oc_getobj() calls.
Change calling convention of HSH_Lookup() so the return value
is what major case we hit, and the returned obj/busyobj goes into
pointer arguments.
Move HSH_Lookup() all the way to the V4 state, compensate backwards
to V3 in cnt_lookup()

Amazingly all the vtc's still pass.
In the future we will need VCL also when we don't have a "struct req"
at hand, most notably in the backend functions.

Pass also a struct worker pointer to all VCL methods.
Encode the VRT prototype leading arguments, they're about to become
more complicated.
Pass the designated workspace to the VCL methods.
Remove the req argument from the VCL foo-to-string conversion functions,
all they need is a workspace.  Some of them don't even need that.
Remove more 'req' arguments from VRT
Merge remote-tracking branch 'upstream/master'