Charset middleware v2

- Sets encoding to `UTF-8` when `ACCEPT-CHARSET` header is missing
- Accounts for multiple charset values with associated quality values by taking advantage of the `Rack::Accept::Charset` object. Multiple charset values are sorted by quality value and the charset with the highest quality value that is also supported by Ruby `Encoded` is enforced.