Propagate coderange from StrNode -> StringLiteral

 and use it when building compound strings. Fixes bug9882.

Will probably want to audit all `StringLiteral` usage in IR to make sure that CRs are preserved when they should be.

Also, `isSameEncodingAndCodeRange` might be optimizable by accepting strings where newStr's coderange is a subset of `str`'s coderange (ie, str == CR_VALID and newStr == CR_7BIT) to avoid extra multibyte work, but I went with this solution because optimization is probably what broke this in the first place.