Code for handling unicode/punycode name conversions

Addressing #120
This was about docs. But yeah, returning `(string, error)` makes sense. And then a little test case would make sense too.

Now that I think about this, Punycode is an encoding, would it make sense to mimic encoding/base32 (or the other encoders there?)