Fixes request headers to conform to spec more closely.

I've made the request headers case insensitive for setting and getting by creating a mapping hash to map the insensitive names with the ones used in setting. I've also fixed setRequestHeader to append values to existing ones as per the spec. Because of this I needed to set the defaults on send if they haven't been set previously (user-agent obviously can't because it's in the restricted list).