Introduce two new states in backend-fetch state machine: retry and error
Extract the bereq->obj creation code to a separate function
Make bereq.* vars available in vcl_backend_error{}
Shift the 503 creation into the error step.
Only attempt to salvage an object into Transient if it wasn't already
destined for Transient in the first place.
remove a couple of pointless copies of the HTTP status.

Pick it out of struct http when needed.
Ensure that bitfields get set.
Use the correct flag to controll EXP_Touch() calls
Gently shuffle things around a bit.
Deal with BS_ERROR much earlier
Now that busyobj has its own worker thread, borrow the stats
throughout the show.
Eliminate some debugging which has overstayed its usefulness
Collect code for increased clarity
Use the same storage allocation policy for 304/IMS as for regular
fetches.
Drop the BOS_COMMITTED state, and rename BOS_FETCHING to BOS_STREAM
which is really what client threads care about.
Add the internal bo->failed state we need to allow retries separate
from the external BOS_FAILED state.