Use the i18n module instead of creating new gettext methods
Force __str__ to return str.

Explicitly cast __str__ results to str any time there is an ambiguity
in the type that the result string may be. Add __unicode__ methods so
that when these objects are converted to unicode they don't need to go
through encoding conversions.
Return all translated strings as unicode (#1144314)

pyudev returns all strings as unicode, which is understandable for them,
since python2 unicode is analogous to python3 str and that way they
don't have to care about non-ascii characters, but annoying for us,
since now we have to care about non-ascii characters.

The automatic str to unicode conversions in python 2 only blow up when
there's non-ascii characters, and the only place we're likely to
enounter non-unicode non-ascii strings in blivet is in the values
returned by gettext. So let's switch to the unicode versions of the
gettext methods.