Added support for (almost) direct tag-to-unicode conversion

Previously, calling unicode() on a tag with non-ascii characters would
result in a UnicodeDecodeError.

With this commit, there is still some implicit str-to-unicode conversion
going on during rendering because literals are in str rather than
unicode, but unlike render(), there's no mandatory utf-8 encoding and we
keep our unicode values unencoded.