Code for handling unicode/punycode name conversions v2

Opening new PR for clean commenting
Use dns.SplitDomainName (or dns.Split) to get the labels, chopping on `.` does not work correctly.