This module provides core functions for handling unicode and UNIX quirks
OSX and others are known to interrupt system calls
http://en.wikipedia.org/wiki/PCLSRing http://en.wikipedia.org/wiki/Unix_philosophy#Worse_is_better
The {read,write,wait}_nointr functions handle this situation
decode(encoded_string) returns an unencoded unicode string
encode(unencoded_string) returns a string encoded in utf-8
Read from a filehandle and retry when interrupted
Wait on a subprocess and retry when interrupted
Write to a filehandle and retry when interrupted