runtime: implement string ops in Go

Also implement go:nosplit annotation.  Not really needed
for now, but we'll definitely need it for other conversions.

benchmark                 old ns/op     new ns/op     delta
BenchmarkRuneIterate      534           474           -11.24%
BenchmarkRuneIterate2     535           470           -12.15%

LGTM=bradfitz
R=golang-codereviews, dave, bradfitz, minux
CC=golang-codereviews
https://golang.org/cl/93380044
diff --git a/src/pkg/runtime/race.go b/src/pkg/runtime/race.go
index 2a9124d..2fe5240 100644
--- a/src/pkg/runtime/race.go
+++ b/src/pkg/runtime/race.go
@@ -29,3 +29,6 @@
 
 func RaceSemacquire(s *uint32)
 func RaceSemrelease(s *uint32)
+
+// private interface for the runtime
+const raceenabled = true