Decode strings as utf-8 when converting to unicode

Using utf-8 makes it possible to have attributes with non-ascii names or values. Whoo!