Adds tests for stale-if-error behaviour.

This also fixes:
 * Adding duplicate headers on stale responses that are handled in
   onComplete.
 * Overwriting an event variable with an exception.
 * can_cache test assuming can_cache works in error conditions.
Good call. OK if I do that in a separate PR? Looks like we don't have test coverage on it now anyways.