Response.get_or_save(): re-propagate when an existing response has changed

for #9, #321. cc @kylewm. not fully done but close!