SI-7325 cleans up corner cases of percent handling in StringContext.f

See comments in code for the exhaustive list of the cases handled.

Moreover, this commit also features exact error positions for string
interpolation, something that has been impossible until the fix for
SI-7271, also included in this patch.