(PE-6019) Encode string request body per Content-Type header

This commit encodes a request body string per the content of the
Content-Type header.  In the event that no charset is specified in the
Content-Type header, the charset is set to UTF-8.  Previously, the
request body string was always encoded to ISO-8859-1 and was not
necessarily in sync with the value of the Content-Type header.
Yeah, that did occur to me.  Another way I could have done it would be to split apart `prepare-headers` into different functions that walk the map and translate the keys to the to-lower map, get the `content-type` from that, and go back and modify the to-lower map with the new accept-encoding and content-type values.  Was trying not to change that part of the code even though it certainly could be more efficient.