Don't assume byte length equality means ascii only

The string can still contain non ascii characters in the 128 - 255
range.
Untag passing specs
Added IO#write and IO.write specs for encoding
IO#write must write the encoded string when encoding is provided