[#2629] Add charset to Content-Type header

- Defaults to UTF-8
- Allows setting via a setter
- charset is always used in generated content-type header

Addresses #2629