Implement logic for IO#read, getbyte, ungetbyte, ungetc.

read specs are nearly passing now. It will be a long tail, since
any methods using ChannelStream will lose or steal data from the
new way, and there aren't many tests for various combinations of
read and write.