Improve string encoding

Hello

I think psych must not assume that the encoding of a String has a semantic meaning. Usually Strings are treated identically if they contain the same characters, even if the encoding is different.

Subclasses of Strings were not dumped if they changed the encoding. I added a simple test and fixed the error, but better tests may be required.

Regards, Paul