Vastly improve Prawn's AFM font encoding handling

A squashed merge of #793, containing the following improvements:

* Text for all Prawn methods is now UTF-8-in, UTF-8-out, so the user
does not need to handle Windows-1252 strings.

* Internally, we're now using Ruby's M17n system to handle the encoding
into Windows-1252, so text.encoding will come back as Windows-1252
when `AFM#normalize_encoding` is called, rather than `ASCII-8Bit`

* When using AFM fonts + ASCII only text, no warning will be seen.

* When using AFM fonts + non-ASCII characters that are supported in
 Windows-1252, users will see a warning about the limited
internationalization support, along with a recommendation to use a TTF
 font instead.

* The warning includes instructions on how to disable it (just set
`Prawn::Font::AFM.hide_m17_warning = true`)

* When using AFM fonts + non-ASCII characters that are NOT supported in
* WIndows-1252, an exception will be raised rather than replacing w.
 `_`.

* None of the above will apply to anyone using TTF fonts with sane UTF-8
support, everything should "just work" for those folks.