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.
the http spec says, `If no Accept-Charset header is present, the default is that any character set is acceptable.`