Do a better job with unicode

Some OSes (Windows) don't use a unicode encoding for stdout.  So we have
to encode everything before printing it.  While we're at it, we'll also
make sure we decode sys.argv, so we're always using unicode internally.
Python's file operations are supposed to do proper encoding when dealing
with filenames, so we should be safe there.

Closes #12.