The strings could have 2 internal representations (UTF-16 or binary),
there is now only the binary one. It makes a few things harder, but
other things much simpler.
The main reason for doing it is that we could have problems in
multi-threaded applications, when multiple threads are using the same
string at the same time, even without using any operation modifiying the
string (as some operations were prefering using the string in UTF-16 and
others in binary mode).
git-svn-id: http://svn.macosforge.org/repository/ruby/MacRuby/trunk@5054 23306eb0-4c56-4727-a40e-e92c0eb68959

ObjC or sensitive places like dispatcher.cpp)
All this was to start cleaning-up string code.
I removed the function pointers for each encoding as I'm pretty sure no
one will use them to extend the encoding-handling and they make the code
harder to maintain.
Feature-wise currently the only change is that String#inspect is much
better when part of a string is invalid:
% ./miniruby -e 'p "あ\xFF"'
"あ\xFF"
git-svn-id: http://svn.macosforge.org/repository/ruby/MacRuby/trunk@5049 23306eb0-4c56-4727-a40e-e92c0eb68959

- Added `-classForKeyedArchiver`, `-encodeWithCoder:` and `-initWithCoder:` so that symbols can be archived in Cocoa
- Added `-copy` returning `self` (copying a symbol does not make sense) so that copied symbols return symbols, not strings
- Fixes 7716974
git-svn-id: http://svn.macosforge.org/repository/ruby/MacRuby/trunk@3863 23306eb0-4c56-4727-a40e-e92c0eb68959