Rewrite sv_catsv to pass SV_CAT* flags to sv_catpvn
(Both functions actually end with _flags, but I’m trying to keep the
first line short.)
Now that sv_catpvn_flags has this functionality (as of
c682ebef86),
sv_catsv can use it, which avoids creating an extra SV for the
utf8+bytes case and removes some duplicate logic.
Also, one code path in sv_utf8_upgrade_flags_grow was ignore the
_grow, causing crashes after the sv_catsv change, so this patch fixes
that, too.
Also, sv_catpvn_flags was not allocating a byte for the trailing
nul, which was entirely my fault (
c682ebef86). So that is hereby
fixed as well.