std::string is not UTF-8 aware, so it was possible to create
malformed strings by splitting in the middle of a code point.
The splitting code also did read beyond the end of the input string.
Now we use a Unicode-aware iterator adaptor to help find the
correct place to split the string across multiple lines.
So far the 'version' literal was compared case sensitive. So we did not
parse ACF files which had a capitalized literal. Instead the comparison
should be case insensitive. To do that we convert all strings to lower
case before comparing.
ref T378