Don't use stringstream because it leaks with rb_raise

rb_raise uses setjmp which doesn't run destructors properly. This results
the stringstream leaking. rb_raise already supports printf style arguments
so we can use that here.