Add support for encodings

This commit adds support for encodings in the keys and values.

The parser default encoding is utf-8 which I think is appropriate given that the W3C algorithm for encoding `application/x-www-form-urlencoded` specifies it as a default. An application that uses the parser is more likely to get a result that just works. In theory this is a breaking change, though. The old default was to assume the input was ascii and if you prefer that could be the default.