Detaching a response needs to fully clone it. This means two things. First
we can't just reference the header, we need to clone it. Otherwise, a change to
one is mirrored in the other.

Secondly, InMemoryResponse also have to be fully cloned, for the same reason. If
you detach, you don't expect a change in the clone to impact the original (or
vice versa)