don't highlight comparison beyond the pattern.

this occurs when we match the whole pattern and then increment j. then
it displays as if it's comparing the character after the pattern, but it
shouldn't highlight anything at this point and wait until i is
incremented again.
trace array assignments with more detail.

(e.g. include the variables/expressions in the brackets as well. also
trace the whole array.)
support tracing complex types correctly.

warning: this is quite expensive, as we clone every value we every
read/write or otherwise store. but other than "stepping" through the
program this is the only valid way i can think of.
implement morris-pratt.