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.
If a stale response expired, the 5xx from the server wasn't being thrown. This is tested in testOnErrorStaleResponseExpired().