add support for charset param

if the response includes the charset param in the
content type header the body will have the
correct encoding set.

if the response has utf-16 set as the content
type it will try and do BOM detection. otherwise
it will default to big endian. this can be 
overridden with the assume_utf16_is_big_endian
option.

this makes the json parsing usable with utf-16 
since utf-16 will not parse correctly if it has
been incorrectly marked as ascii.