Tweaking visibility of RunAutomaton
Fix UTF32 support

Java and .NET characters work in exactly the same way. In both a UTF16 codepoint can be represented by one char, and UTF32 chars may be split to 2 chars. And we need to account for that.