Setup String objects without the accessors

This is safe to do here since we don't setup any Ruby objects, but only
immediates. This prevents a lot of calls into update_handle, since that
is done for the attributes of a String. In systems allocated a lot of
String objects, this shows up as significant in profiles.
Fix GC issue when profiling

We need to guard these objects on the stack when we profile. This is
because the profiler should see them properly. When we GC in a
checkpoint we have to make sure to update the references for the
profiler.