Fix issue with first headers received becoming permanent.

Copying headers directly onto the options object passed to proxy
was resulting in headers from the first request seen to clobber
headers on every subsequent request. This was resolved by using
a distinct options object to create the outgoing proxy request
for each incoming request. I also updated header merging to not
change the state of the incoming request object.