added tools to help with strings.
StringUtf8 represents a single CHARSXP string that is either UTF-8 or known to be ASCII.
CharacterVectorUtf8 represents a character vector that has all strings UTF-8 or ASCII.

NamedListAccumulator has been modified to use these new tools, which closes #636
test and new entry for #636