Some other niceties we should probably offer:
- ability to force UTF-8 as the global default encoding for everything (not arbitrary encodings, just UTF-8)
- a way to switch the encoding and/or error handling of an existing IO stream (http://bugs.python.org/issue15216)
- ensure any APIs that may return surrogate escaped strings (or improperly latin-1 encoded strings) are clearly marked as doing so