Add spec for StringIO with different encodings
Add String#byte_append and have StringIO use it

StringIO needs to binary add data together without doing any conversions
etc. This new primitive allows it to do that.

Fixes an issue with the ActiveSupport specs.
Update to latest logger from stdlib 1.9.3