Just use empty string constant, not make an empty.
Significantly overhaul the strings code.

Introduce a grapheme iterator, along with a codepoint iterator (that
is just an alias to the same thing). Go with a flat approach to the
strands, which greatly simplifies traversal of a string and should do
a little better CPU-cache wise. Actually use strands in concatenation,
substring, joining, and repeat operations.

This patch does enough to get NQP and Rakudo building and passing the
sanity tests with the new approach; spectest looks good too. Still a
good amount of optimization and improvements possible, which will be
easier now the code is cleaner.
Fix variable names in asserts.
Toss debug code.
Fix copy-pasto when updating latin-1 encoding.
Make MVM_string_gi_move_to a bunch more efficient.

Jump directly to the right strand, and then to the correct repetition.
Optimize find_cclass and find_not_cclass.

Now, they just swiftly iterate graphemes with a single iterator in the
strand case, rather than making an iterator per char read.
Merge branch 'strref'