Implement String methods in an object rather than as a trait.

This fixes the mess that RuntimeString was as a trait. It was
very hacky and very dependent on the implementation details.

Now, RuntimeString is only an object, and its methods take an
explicit `thiz` parameter that stands for the String being
operated on.

Most methods are inlineable one-liners. For the others, Closure
turn them into static methods anyway.
Merge pull request #1182 from sjrd/runtime-string-as-an-object

Implement String methods in an object rather than as a trait.