pyversion: try unicode() before stringifying in force_unicode()

In Python 3, just stringify the argument.  In all other Python
implementations, let's attempt to use unicode() first, and then fallback
to using str() and decoding.
pyversion: minor fixes to exc_to_unicode

In Python 3, just str() the argument and return.  In other Python
implementations, work a little harder to make sure that we return a
unicode string.