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.
RE: `index >= values.length - 1`

What does this mean? Is there a clearer way to express this logic? If not, can we roll into a method with a name that expresses your intent?