Python3

This fixes some issues by making sure we use bytes everywhere.

The one problem I still see is that converting non-ascii filenames on Windows will decode with the current locale, which is definitely not the UTF-8 encoding we assume for the remote. Other direction should work.