Enforce that file names are always bytestrings.

Perhaps they should be unicode objects (even Python 3 supports either
passed to open()). Still, we should enforce consistency.
Modifying String so it stores a list of unicode chars internally.