Unicode Stuff

I've gone through everything making sure that all strings are {unicode strings in Python 2; normal strings in Python 3}. So, everything which goes into the program is decoded using the system encoding (i.e. the one given by `locale.getpreferredencoding()`); the program just deals with unicode objects internally; and then everything which goes out gets encoded again with the system encoding.

I've removed the `except UnicodeEncodeError` bit, because that no longer gets triggered (unless there's a bug of course!).