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.
In that case we need to delete the throw $e from the handleBadResponse method.