Only convert []bytes into a String() when needed for a panic

Would love a test_bench.go file to show perf differences, but seems reasonable to not covert []byte to .String() unless we actually are going to use it -- and currently thats only on the `panic(...)` path.
Could you add a short comment why this is here? It's not intuitive right off the bat.