Fix scanning of multiple strings.

This input:
    "a" + "b"
was scanned as a single long string. While fixing it, I filled in some
gaps on the expandable string part definitions.

A negative consequence of these changes is that `"abc$%abc"` produces a
parse error. Punting that issue for now.